Передать переменную во внешний файл JS?

Можно ли передать переменную в связанный файл .js? Я пробовал это:

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

Но firebug сообщает мне, что тайм-аут не определен. Вот код этого файла .js:

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

Я использую тег <sf:JsFileLink ... />, потому что веб-сайт, на котором я работаю, использует sitefinity, и этот тег позволяет мне загружать внешние файлы .js.

ОБНОВИТЬ:

Мне удалось «обмануть» включение, создав страницу aspx, которая имитирует страницу javascript:

<%@ 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));
    }
}

Это достигло того, что я искал, и, возможно, этот метод может помочь кому-то другому.


person Anders    schedule 27.08.2009    source источник


Ответы (4)


Нет, вы не можете передавать такие параметры и заставлять скрипт их считывать.

Технически вы могли бы взять их из тега <script>, но это был бы настоящий беспорядок.

Не могли бы вы просто вывести блок сценария перед включением файла?

<script type="text/javascript"> var timeout = 1000; </script>
person Greg    schedule 27.08.2009
comment
Не похоже, по крайней мере, в этом файле. Я попробую поместить это в файл главной страницы. - person Anders; 28.08.2009
comment
Это работает, если у меня есть блок сценария на главной странице, но не в файле управления пользователем. - person Anders; 28.08.2009
comment
Фактически, вы можете передать такие параметры и заставить сценарий читать их: stackoverflow.com/questions/1203933/ - person Crescent Fresh; 28.08.2009
comment
@crescentfresh, который берет URL-адрес из тега ‹script›, как я заметил - person Greg; 28.08.2009

попробуй это:

<script>
var myvariable = "foo";
</script>
<script src="/link/to/js.js"></script>
person Byron Whitlock    schedule 27.08.2009
comment
Я знаю, что это устарело, но похоже, что это точно отвечает на вопрос оператора, и очень элегантно. Большое спасибо!! Возможно, я неправильно понимаю, что спрашивал оператор, потому что я плохо разбираюсь в javascript, но это позволило мне передавать переменные со страницы просмотра, чтобы мой внешний файл js имел доступ к переменным. Если я чего-то не упустил в вопросе оператора, отмеченный ответ неверен. Я думаю, это почти то же самое, что и @ Developer-Sid - person Alan; 22.07.2019

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

Это будет нормально работать на сервере

person Developer-Sid    schedule 07.10.2012

Нет, но вы можете передать значение непосредственно функции в этом файле или установить значение переменной, которое будет использоваться во внешнем файле.

person AyexeM    schedule 27.08.2009