将变量传递给外部JS文件?

11

我能否将一个变量传递给链接的.js文件?我尝试过这个方法:

<sf:JsFileLink ID="JQueryLoader" runat="server" ScriptType="Custom" FileName="~/Files/Scripts/rotatorLoader.js?timeout=1000" />

然而,Firebug告诉我timeout未定义。以下是该.js文件的代码:

$(document).ready(function() {
    $("#rotator > ul").tabs({ fx: { opacity: "toggle"} }).tabs("rotate", timeout, true);
});

我使用<sf:JsFileLink ... />标签是因为我所在的网站采用了Sitefinity,这个标签允许我加载外部的.js文件。

更新:

我通过创建一个模拟JavaScript页面的aspx页面来“欺骗”包含操作:

<%@ Page Language="C#" %>

<%
    Response.ContentType = "text/javascript";
    Response.Clear();
    string timeout;
    try
    {
        timeout = Session["timeout"].ToString();
    }
    catch
    {
        timeout = "4000";
    }
%>

$(document).ready(function() {
    $("#rotator > ul").tabs({ fx: { opacity: "toggle"} }).tabs("rotate", <%=timeout %>, true);
});

并且在用户控制页面上:

[DefaultProperty("BannerTimeout")]
public partial class Custom_UserControls_TabbedRotator : System.Web.UI.UserControl
{
    [Category("Configuration")]
    [Description("Sets the rotation timeout, in seconds.")]
    [DisplayName("Banner Timeout")]
    public int BannerTimeout { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        Session.Add("timeout", (BannerTimeout*1000));
    }
}
这达到了我想要的结果,也许这种方法可以帮助其他人。
4个回答

18

试一下这个:

<script>
var myvariable = "foo";
</script>
<script src="/link/to/js.js"></script>

我知道这已经过时了,但这似乎完美地回答了op的问题,并且非常优雅。非常感谢!因为我不擅长JavaScript,所以可能误解了op的问题,但这使我能够从我的视图页面传递变量,以便我的外部js文件可以访问这些变量。除非在op的问题中有什么我错过的东西,否则标记的答案是错误的。我想这几乎与@Developer-Sid相同。 - Alan

16

不,你不能这样传递参数并让脚本读取它们。

从技术上讲,你可以从<script>标签中获取它们,但那会很混乱。

你可以在包含文件之前输出一个脚本块吗?

<script type="text/javascript"> var timeout = 1000; </script>

看起来不是这样的,至少在这个文件中不是。我将尝试将其放入主页面文件中。 - Anders
如果我将脚本块放在主页面中,它可以工作,但是放在用户控件文件中就不行。 - Anders
实际上,您可以传递这样的参数并让脚本读取它们:https://dev59.com/90jSa4cB1Zd3GeqPHKm7#1204095 - Crescent Fresh
@crescentfresh,正如我所指出的那样,这是从<script>标签中获取URL。 - Greg

4
<script type="text/javascript">
var imagesPath = "emblematiq/img/";
</script>
<script type="text/javascript" src="emblematiq/niceforms.js"></script>

这将在服务器上正常工作。


0
不可以直接引用外部文件的变量,但你可以把该变量的值传递给该文件中的某个函数,或者设定一个变量的值并在外部文件中使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接