Baru-baru ini seorang rekan menggunakan kontrol Menu asp.net 2.0, yang merupakan salah satu kontrol navigasi asp.net 2.0. Baru-baru ini saya menemukan masalah dan menempatkan kontrol ini di halaman master, kemudian sebuah halaman menggunakan halaman master yang
saya temukan bahwa ketika halaman dimuat Ini belum berakhir. Saat Anda mengklik menu dengan cepat, kesalahan khusus IE akan dilaporkan.
Setelah mencari di Google, banyak ditemukan error seperti ini. Beberapa orang juga mengalami error serupa saat menggunakan menu asp.net.
http://forums.asp.net/thread/1158791.aspx
http://forums.asp.net/thread/1159962.aspx
Program serupa dapat dijelajahi dengan firefox tetapi tidak ada masalah dengan IE ini sebenarnya a kesalahan yang sangat umum, biasanya terjadi ketika dokumen belum dimuat dan skrip secara dinamis mengubah status dokumen.
Untuk menu asp.net, saya melihat kode yang dihasilkan secara otomatis sebenarnya, Ini adalah file js. Ada kode serupa di dalamnya
.
childFrame = dokumen.createElement("iframe");
childFrame.id = childFrameId;
childFrame.src = (data.iframeUrl ? data.iframeUrl : "about:blank");
childFrame.style.position = "mutlak";
childFrame.style.display = "tidak ada";
childFrame.scrolling = "tidak";
childFrame.frameBorder = "0";
if (parent.tagName.toLowerCase() == "html") {
dokumen.body.appendChild(childFrame);
}
kalau tidak {
parent.appendChild(childFrame);
}
}
Haha
, memang ada kode appendchild yang dinamis. Faktanya, pendekatan ini tidak ketat. Kode yang ditulis oleh MS terkadang mengabaikan beberapa masalah.
Bagaimana jika dokumen belum dimuat dan appendchild terpicu?
akan menjadi kesempatan untuk konkurensi. Ini mirip dengan sinkronisasi thread. Inilah sebabnya IE akan melaporkan kesalahan. Kontrol konkurensi Firefox pada modifikasi status dokumen mungkin berbeda dari IE.
Bagaimana cara memodifikasinya selanjutnya?
1. Anda dapat memasukkan menu ke dalam div, atur visibilitasnya terlebih dahulu ke tersembunyi.
2. Setelah dokumen dimuat, atur visibilitas menjadi terlihat
.
fungsi TampilkanMenu()
{
if(document.readyState=="selesai")
{
document.getElementById("DivOfMenu").style.visibility="terlihat"
}
}
Itu saja.
http://www.cnblogs.com/montaque/archive/2006/09/18/507639.html