问题
Is it possible to pass a variable to a linked .js file? I tried this:
<sf:JsFileLink ID="JQueryLoader" runat="server" ScriptType="Custom" FileName="~/Files/Scripts/rotatorLoader.js?timeout=1000" />
But firebug is telling me that timeout is not defined. Here is the code for that .js file:
$(document).ready(function() {
$("#rotator > ul").tabs({ fx: { opacity: "toggle"} }).tabs("rotate", timeout, true);
});
I am using <sf:JsFileLink ... />
tag is because the website I am working in utilizes sitefinity and this tag allows me to load external .js files.
UPDATE:
I was able to 'trick' the include by creating an aspx page that emulates a javascript page:
<%@ 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);
});
And on the user control page:
[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));
}
}
This achieved what I was looking for, and maybe this method can help someone else out.
回答1:
No, you can't pass parameters like that and have the script read them in.
Technically you could grab them from the <script>
tag, but that would be a real mess.
Could you just output a script block before you include the file?
<script type="text/javascript"> var timeout = 1000; </script>
回答2:
try this:
<script>
var myvariable = "foo";
</script>
<script src="/link/to/js.js"></script>
回答3:
<script type="text/javascript">
var imagesPath = "emblematiq/img/";
</script>
<script type="text/javascript" src="emblematiq/niceforms.js"></script>
This will work fine on server
回答4:
No, but you can pass a the value directly to a function in that file or set a variable value that will be used in the external file.
来源:https://stackoverflow.com/questions/1343801/pass-variable-to-external-js-file