У меня есть созданная веб-часть, которая отображает некоторые аналоговые часы в сочетании с часовым поясом, указанным пользователем. Проблема в том, что мои часы иногда загружаются, а иногда нет. Я считаю, что моя проблема заключается в порядке загрузки моих файлов 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>");
}
}
Теперь иногда часы будут отображаться нормально, а иногда у меня будет оболочка для моих аналоговых часов, а не минутная или секундная стрелки (они отображаются в зависимости от того, для какого часового пояса он установлен). Как вы можете видеть из моего закомментированного кода, я попробовал несколько разных способов заставить это работать правильно. Любые предположения о том, почему мои часы иногда работают, и если я обновлю страницу несколько раз, они будут работать.