判断html是否在框架中打开网页,如何识别网页是加载在iframe中还是直接加载到浏览器窗口?...

博客讨论了一个关于IE7/IE8浏览器中的JavaScript问题,当在框架内操作并尝试在新标签页加载页面时,由于IE的框架复制行为,可能导致无限加载循环。文章通过示例解释了这个问题,并提供了一个检查当前页面是否在顶级窗口的解决方案,以防止此类错误发生。
摘要由CSDN通过智能技术生成

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,因此您可以测试这个奇怪的条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值