ユーザーが指定した時間帯に合わせていくつかのアナログ時計を表示するように作成したWebパーツがあります。私が抱えている問題は、私の時計が時々ロードされ、時にはそうでないことです。私は自分の問題が私のjsファイルの読み込み順序にあると信じています。私は、私のWebパーツコードでOnLoadイベントで読み込んだjsを持っていて、clock.jsファイル(クロックを構築するファイル)は、UTC時間+オフセットが与えられているコードより前に実行されています。 HtmlTextWritterを使用してC#で最後にロードするJavaScriptファイルを遅延させる方法
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
私はしかし、それは大きなファイルです:)私が使っているwebservice呼び出しはJavaScriptであり、私の問題はどこにあるのだろうと思います.C#webservice呼び出しを使っていましたが、これを複数の環境に展開することは、ウェブサーバーのURLをハードコーディングすることを意味しますweb.configの副。 JSでは(window.href)これを行う必要はありませんが、毎回レンダリングすることはできません。奇妙なことは、それがうまくいくということですが、望むときだけです。 – lazoDev