Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止iframe破坏会杀死站点上的所有链接_Javascript_Iframe - Fatal编程技术网

Javascript 防止iframe破坏会杀死站点上的所有链接

Javascript 防止iframe破坏会杀死站点上的所有链接,javascript,iframe,Javascript,Iframe,我在下面有一个脚本,它确实阻止了iFrame崩溃,但它也杀死了我页面上的每个链接。如何防止脚本禁用我的所有链接 <script> var prevent_bust = 0 window.onbeforeunload = function() { prevent_bust++ } setInterval(function() { if (prevent_bust > 0) { prevent_bust

我在下面有一个脚本,它确实阻止了iFrame崩溃,但它也杀死了我页面上的每个链接。如何防止脚本禁用我的所有链接

<script>
    var prevent_bust = 0  
    window.onbeforeunload = function() { prevent_bust++ }  
    setInterval(function() {  
        if (prevent_bust > 0) {  
            prevent_bust -= 2  
            // 204 header response prevents redirect
            window.top.location = '/204-response'  
        }  
    }, 1)  
</script>

var\u bust=0
window.onbeforeunload=函数(){provent\u-bust++}
setInterval(函数(){
如果(阻止值>0){
预防胸围-=2
//204头响应阻止重定向
window.top.location='/204响应'
}  
}, 1)  

我遇到的问题与这里描述的完全一样:

编辑:您使用这种方法制作framebust有什么原因吗?普遍接受的方法是比较
self===top
,我非常怀疑这会破坏任何锚定标签:

if (self !== top) {
    // this script is running in an iframe
} else {
    // this script is not running in an iframe
}
这很可能会影响IE():

  • 单击引用其他文档的定位点
  • 调用anchor.click方法
要允许
onbeforeuload
事件在不干扰锚定标记单击的情况下继续,必须从中返回
undefined

window.onbeforeunload = function() { 
    prevent_bust++; 
    return undefined; 
};

为了澄清这一点,
onbeforeunload
希望处理程序返回一个字符串,然后将该字符串放入确认框。如果您返回
未定义
,它将绕过此选项,继续执行
卸载
事件。

目前禁用帧分解的最佳方法是,但正如您在测试中所发现的那样
这种方法有一些缺点

但是,204代码禁用所有浏览器导航(所有链接、后退、前进等)。
然而,有些浏览器, 重新安装了后退和前进按钮,但仍然没有链接导航,因此将其应用于代码可能不是最好的主意,您是否尝试过将“/204响应”添加到
Iframes源(src属性)

框架破坏是一种跨原点嵌入的问题。。。但就像我说的,沙箱规则只在一定程度上有效

所以试试沙盒属性,让我们知道它是如何工作的

(显然,这种类型的事情是针对每种情况的,但这是一种很好的通用方法。)

FF和Chrome中也出现了这种情况,
return undefined
似乎无法解决它。该脚本似乎阻止任何链接工作,而不仅仅是iframe中的重定向。其目的是防止框架破坏。。。如何使用
self===top
来防止iframe崩溃?