Предаване на променлива към външен 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