Передать переменную во внешний файл JS? - PullRequest
7 голосов
/ 28 августа 2009

Можно ли передать переменную в связанный файл .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.

UPDATE:

Мне удалось «обмануть» включение, создав страницу 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));
    }
}

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

Ответы [ 4 ]

15 голосов
/ 28 августа 2009

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

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

Не могли бы вы вывести блок скрипта, прежде чем включать файл?

<script type="text/javascript"> var timeout = 1000; </script>
9 голосов
/ 28 августа 2009

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

<script>
var myvariable = "foo";
</script>
<script src="/link/to/js.js"></script>
2 голосов
/ 07 октября 2012
<script type="text/javascript">
var imagesPath = "emblematiq/img/";
</script>
<script type="text/javascript" src="emblematiq/niceforms.js"></script>

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

0 голосов
/ 28 августа 2009

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

...