最近、同僚が asp.net 2.0 のナビゲーション コントロールの 1 つである asp.net 2.0 のメニュー コントロールを使用していたので、このコントロールをマスターページに配置しました
。ページがロードされると、まだ終わっていません。メニューをすばやくクリックすると、IE 固有のエラーが報告されます。
Google で検索すると、asp.net メニューを使用するときに同様のエラーが多数発生しました。
http://forums.asp.net/thread/1158791.aspx
http://forums.asp.net/thread/1159962.aspx
同様のプログラムは Firefox でも閲覧できますが、IE でのこの問題は実際には問題ありません。非常によくある間違いですが、これは通常、ドキュメントが読み込まれておらず、スクリプトがドキュメントのステータスを動的に変更するときに発生します。asp.net が
自動的に生成するコードを調べました。実際、これは js ファイルです。
if (!childFrame) {
childFrame = document.createElement("iframe");
childFrame.id = childFrameId;
childFrame.src = (data.iframeUrl ? data.iframeUrl : "about:blank");
childFrame.style.position = "絶対";
childFrame.style.display = "なし";
childFrame.scrolling = "いいえ";
childFrame.frameBorder = "0";
if (parent.tagName.toLowerCase() == "html") {
document.body.appendChild(childFrame);
}
それ以外 {
親.appendChild(childFrame);
}
}
実際、このアプローチは厳密ではありません。
ドキュメントがまだロードされていないときに appendchild がトリガーされる場合はどうなるでしょうか
。これは、スレッドの同期と似ています。これが、Firefox のドキュメント ステータスの変更に関するエラーを報告する理由です。
次に、それを変更する方法を説明します。
1. メニューを div に配置できます。まず可視性を非表示に設定します。
2. ドキュメントがロードされたら、可視性を
document.onreadystatechange=ShowMenu;
に設定します。
関数 ShowMenu()
{
if(document.readyState=="完全")
{
document.getElementById("DivOfMenu").style.visibility="visible"
}
}
それでおしまい。
http://www.cnblogs.com/montaque/archive/2006/09/18/507639.html