【问题标题】:Pass variable to external JS file?将变量传递给外部 JS 文件?
【发布时间】:2009-08-27 21:23:19
【问题描述】:

是否可以将变量传递给链接的 .js 文件?我试过这个:

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

但萤火虫告诉我没有定义超时。这是该 .js 文件的代码:

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

我使用&lt;sf:JsFileLink ... /&gt; 标签是因为我工作的网站利用了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));
    }
}

这实现了我想要的,也许这种方法可以帮助其他人。

【问题讨论】:

    标签: javascript jquery sitefinity


    【解决方案1】:

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

    从技术上讲,您可以从 &lt;script&gt; 标记中获取它们,但这将是一团糟。

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

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

    【讨论】:

    • 看起来不像,至少在这个文件中没有。我将尝试将其放入母版页文件中。
    • 如果我在母版页中有脚本块,但在用户控制文件中没有,则此方法有效。
    • 其实你可以这样传递参数,然后让脚本读入:stackoverflow.com/questions/1203933/…
    • @crescentfresh 正如我所指出的,它正在从
    【解决方案2】:

    试试这个:

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

    【讨论】:

    • 我知道这很旧,但这似乎准确地回答了操作员的问题,而且非常优雅。非常感谢!!我可能误解了操作员的要求,因为我不擅长 javascript,但这允许我从我的视图页面传递变量,以便我的外部 js 文件可以访问这些变量。除非我在操作的问题中遗漏了什么,否则标记的答案是错误的。我猜这和@Developer-Sid 几乎一样
    【解决方案3】:
    <script type="text/javascript">
    var imagesPath = "emblematiq/img/";
    </script>
    <script type="text/javascript" src="emblematiq/niceforms.js"></script>
    

    这在服务器上可以正常工作

    【讨论】:

      【解决方案4】:

      不,但您可以将值直接传递给该文件中的函数或设置将在外部文件中使用的变量值。

      【讨论】:

        猜你喜欢
        • 2020-06-06
        • 2019-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-18
        相关资源
        最近更新 更多