我有一個Web部件,它創建了一些與用戶指定的任何時區結合的模擬時鐘。我遇到的問題是我的時鐘有時會加載,有時候不會。我相信我的問題在於我的js文件的加載順序。我在我的web部件代碼中加載了一個OnLoad事件,並且我的clock.js文件(構建時鐘的文件)在我的代碼給出UTC時間+偏移量被定義之前先運行。如何延遲JavaScript文件使用HtmlTextWritter在C#中加載最後一個
這裏是我的代碼,以顯示時鐘的時鐘:
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>");
}
}
現在有時時鐘將呈現細,有時候我會爲我的模擬時鐘外殼和無分,秒指針(這些都是基於它設置的時區來渲染)。正如你從我註釋掉的代碼中可以看到的,我嘗試了幾種不同的方法來使它正確工作。任何有關我的時鐘爲什麼有效的問題,如果我刷新頁面幾次,他們將工作。
我試過了,我面對的問題是這是一個wsp。 JavaScript文件不能從scr =「myjs.js方法中調用,因爲它們並不位於項目的根級別,並且它們不在12配置單元中,所以也沒有」_layouts/myjs.js「。他們進入程序集,並且由於SharePoint有時候是一個邪惡的助推器,這就是它如何完成的,我也試過了所有的時間,我開始認爲它不會起作用。對你的幫助非常感謝 – lazoDev
是的,我認爲這對你來說太簡單了,沒有嘗試過,我想如果你想弄亂,你可以把.js文件的內容寫到頁面上 – Maxx
我會,但它是一個大文件:)什麼讓我生氣是我使用的web服務調用是在JavaScript中,我認爲這是我的問題所在,我使用的是一個C#web服務調用,但效果很好;但是,我正在將其部署到多個環境中,這意味着對webser的url進行硬編碼在web.config中擔心。使用JS我不必這樣做(window.href),但我無法每次渲染這個東西。奇怪的是,它會工作,但只有當它想要。 – lazoDev