RoBorg là chính xác, nhưng tôi muốn thêm một ghi chú bên.
Trong IE7 / IE8 khi Microsoft thêm Tab vào trình duyệt của họ, họ đã phá vỡ một điều sẽ gây ra sự tàn phá với JS của bạn nếu bạn không cẩn thận.
Hãy tưởng tượng bố cục trang này:
MainPage.html
IframedPage1.html (named "foo")
IframedPage2.html (named "bar")
IframedPage3.html (named "baz")
Bây giờ trong khung "baz", bạn nhấp vào một liên kết (không có mục tiêu, tải trong khung "baz") nó hoạt động tốt.
Nếu trang được tải, hãy gọi nó là Special.html, sử dụng JS để kiểm tra xem "nó" có khung cha có tên là "bar" hay không, nó sẽ trả về đúng (dự kiến).
Bây giờ hãy nói rằng trang Special.html khi tải, kiểm tra khung chính (để biết sự tồn tại và tên của nó và nếu là "thanh", nó sẽ tự tải lại trong khung thanh. Ví dụ:
if(window.parent && window.parent.name == 'bar'){
window.parent.location = self.location;
}
Càng xa càng tốt. Bây giờ đến lỗi.
Hãy nói thay vì nhấp vào liên kết ban đầu như bình thường và tải trang Special.html trong khung "baz", bạn nhấp vào giữa hoặc chọn mở trong Tab mới.
Khi tab mới đó tải (hoàn toàn không có khung chính! ) IE sẽ nhập một vòng vô tận tải trang! bởi vì IE "sao chép" cấu trúc khung trong JavaScript sao cho tab mới DOES có cha mẹ và cha mẹ đó có tên "thanh".
Tin tốt là kiểm tra:
if(self == top){
//this returns true!
}
trong tab mới đó trả về true và do đó bạn có thể kiểm tra điều kiện kỳ lạ này.