Как отложить файл JavaScript для последней загрузки в C # с помощью HtmlTextWritter - PullRequest
0 голосов
/ 28 июля 2011

У меня есть созданная веб-часть, которая отображает некоторые аналоговые часы в сочетании с часовым поясом, указанным пользователем. Проблема в том, что мои часы иногда загружаются, а иногда нет. Я считаю, что моя проблема заключается в порядке загрузки моих файлов js. У меня есть загрузка js в событии OnLoad в моем коде веб-части, и мой файл clock.js (файл, который создает часы) запускается первым, прежде чем мой код, который дает время UTC + смещение, различается.

Вот мой код для отображения часов:

protected override void Render(HtmlTextWriter output)
    {
    base.Render(output);


var skins = this._ClockSkins.ToString();

output.Write("<table align=\"center\"><tr>");

for (int i = 0; i < 6; i++)
{



output.RenderBeginTag(HtmlTextWriterTag.Script);
output.AddAttribute(HtmlTextWriterAttribute.Type, "text/javascript");

//output.Write("var time;");
output.Write("function LoadTrigger() {");
output.Write("document.write('<span><div width=\"90px\"><td width=\"90px\" valign=\"top\" align=\"center\" ><canvas class=\"CoolClock:" + skins + "\" id=\"[" + i + "]\" ></canvas></td></div></span>');");
output.Write("}");
output.Write("window.onload = LoadTrigger();");
//output.Write("window.setTimeout(\"LoadTrigger()\", 1000);");
output.RenderEndTag();

//output.Write("<script defer=\"defer\" type=\"text/javascript\">document.write     ('<span><div width=\"90px\"><td width=\"90px\" valign=\"top\" align=\"center\" ><canvas class=\"CoolClock:" + skins + "\" id=\"[" + i + "]\" ></canvas></td></div></span>');</script>");
}

output.Write("</tr></table>");


}
}

Теперь иногда часы будут отображаться нормально, а иногда у меня будет оболочка для моих аналоговых часов, а не минутная или секундная стрелки (они отображаются в зависимости от того, для какого часового пояса он установлен). Как вы можете видеть из моего закомментированного кода, я попробовал несколько разных способов заставить это работать правильно. Любые предположения о том, почему мои часы иногда работают, и если я обновлю страницу несколько раз, они будут работать.

Ответы [ 2 ]

1 голос
/ 29 июля 2011

Если вы вызываете файл js, можете ли вы на самом деле использовать JQuery? Если вы смогли добавить JQuery в файл .js, вы можете использовать это:

$ (документ) .ready (функция () { ... ваши вещи здесь ... });

Что будет выполняться после загрузки страницы.

1 голос
/ 28 июля 2011

Вы можете использовать что-то вроде

setTimeout(function(){
  document.write("<script type='text/javascript' src='clock.js'></script>
");
}, 1000);

, чтобы отложить запись этого включения на вашей странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...