RoBorg benar, tetapi saya ingin menambahkan catatan tambahan.
Di IE7 / IE8 ketika Microsoft menambahkan Tab ke browser mereka, mereka merusak satu hal yang akan menyebabkan kekacauan dengan JS Anda jika Anda tidak hati-hati.
Bayangkan tata letak halaman ini:
MainPage.html
IframedPage1.html (named "foo")
IframedPage2.html (named "bar")
IframedPage3.html (named "baz")
Sekarang dalam bingkai "baz" Anda mengklik tautan (tanpa target, memuat dalam bingkai "baz") itu berfungsi dengan baik.
Jika halaman yang dimuat, mari kita menyebutnya special.html, gunakan JS untuk memeriksa apakah "itu" memiliki kerangka induk bernama "bar" itu akan mengembalikan true (diharapkan).
Sekarang katakanlah bahwa halaman special.html ketika dimuat, periksa kerangka induk (untuk keberadaan dan namanya, dan jika "bilah", ia memuat ulang dirinya sendiri dalam bingkai bilah. Misalnya
if(window.parent && window.parent.name == 'bar'){
window.parent.location = self.location;
}
Sejauh ini bagus. Sekarang tiba bug.
Katakanlah daripada mengklik tautan asli seperti biasa, dan memuat halaman special.html dalam bingkai "baz", Anda mengekliknya di tengah atau memilih untuk membukanya di Tab baru.
Saat itu, tab baru dimuat ( tanpa bingkai induk sama sekali! ) IE akan memasuki lingkaran tanpa akhir pemuatan halaman! karena IE "menyalin" struktur frame dalam JavaScript sehingga tab baru TIDAK memiliki orangtua, dan orangtua itu MEMILIKI nama "bar".
Berita baiknya, adalah:
if(self == top){
//this returns true!
}
di tab baru itu mengembalikan true, dan dengan demikian Anda dapat menguji kondisi aneh ini.