RoBorg是正确的,但我想添加一个附带说明。
在IE7/IE8中,当微软在浏览器中添加Tabs时,如果你不小心的话,就会破坏一个会对你的JS造成破坏的东西。
想象一下这个页面布局:MainPage.html IframedPage1.html (named "foo")
IframedPage2.html (named "bar")
IframedPage3.html (named "baz")
现在,在框架“Baz”中,您单击一个链接(没有目标,加载到“Baz”框架中),它工作得很好。
如果加载的页面称为Special.html,则使用JS检查“it”是否有一个名为“bar”的父框架,它将返回true(预期)。
现在让我们说一下,当它加载时,Special.html页面会检查父框架(是否存在和它的名称,如果它是“bar”),它会在BAR框架中重新加载自己。G.if(window.parent && window.parent.name == 'bar'){
window.parent.location = self.location;}
到目前一切尚好。虫子来了。
让我们说,您不是像普通一样点击原始链接,而是在“baz”框架中加载Special.html页面,而是在中间单击它,或者选择在新的Tab中打开它。
当新选项卡加载时(根本没有父帧!) IE将进入一个无休止的页面加载循环!因为IE“复制”了JavaScript中的框架结构,因此新的选项卡确实有一个父选项卡,而该父选项卡的名称为“bar”。
好消息是:if(self == top){
//this returns true!}
在这个新的选项卡中,返回true,因此您可以测试这个奇怪的条件。