是否可以将变量传递给链接的.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);
});
我正在使用<sf:JsFileLink ... />
标记,因为我正在使用的网站使用sitefinity,此标记允许我加载外部.js文件。
我能够通过创建一个模拟javascript页面的aspx页面来“欺骗”include:
<%@ 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));
}
}
这实现了我所寻求的目标,也许这种方法可以帮助其他人。
答案 0 :(得分:15)
不,你不能传递这样的参数并让脚本读入它们。
从技术上讲,你可以从<script>
标签中抓取它们,但那真是一团糟。
您可以在包含文件之前输出脚本块吗?
<script type="text/javascript"> var timeout = 1000; </script>
答案 1 :(得分:9)
试试这个:
<script>
var myvariable = "foo";
</script>
<script src="/link/to/js.js"></script>
答案 2 :(得分:2)
<script type="text/javascript">
var imagesPath = "emblematiq/img/";
</script>
<script type="text/javascript" src="emblematiq/niceforms.js"></script>
这将在服务器上正常工作
答案 3 :(得分:0)
不,但您可以将该值直接传递给该文件中的函数,或者设置将在外部文件中使用的变量值。