Pass variable to external JS file?
Asked Answered
I

4

12

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.

Imbecility answered 27/8, 2009 at 21:23 Comment(0)
I
16

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>
Intensive answered 27/8, 2009 at 21:26 Comment(4)
Doesn't look like it, at least not in this file. I am going to try putting that in the master page file.Imbecility
This works if I have the script block in the master page, but not in the user control file.Imbecility
Actually, you can pass parameters like that and have the script read them in: #1204433Mestas
@crescentfresh that's grabbing the url from the <script> tag as I notedIntensive
L
19

try this:

<script>
var myvariable = "foo";
</script>
<script src="/link/to/js.js"></script>
Labdanum answered 27/8, 2009 at 21:26 Comment(1)
I know this is old, but this seems to exactly answer the op's question, and very elegantly. Thanks so much!! I may be misunderstanding what the op asked because I'm not good at javascript, but this allowed me to pass variables from my view page so my external js file had access to the variables. Unless there's something I'm missing in the op's question, the marked answer is wrong. I guess this is almost the same as @Developer-SidSavonarola
I
16

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>
Intensive answered 27/8, 2009 at 21:26 Comment(4)
Doesn't look like it, at least not in this file. I am going to try putting that in the master page file.Imbecility
This works if I have the script block in the master page, but not in the user control file.Imbecility
Actually, you can pass parameters like that and have the script read them in: #1204433Mestas
@crescentfresh that's grabbing the url from the <script> tag as I notedIntensive
G
4
<script type="text/javascript">
var imagesPath = "emblematiq/img/";
</script>
<script type="text/javascript" src="emblematiq/niceforms.js"></script>

This will work fine on server

Goatskin answered 7/10, 2012 at 8:50 Comment(0)
T
0

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.

Toothache answered 27/8, 2009 at 21:26 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.