2012-07-27 67 views
0

我在下面有这个脚本,它可以防止iFrame被破坏,但它也会杀死我的页面上的每个链接。如何防止脚本禁用所有链接?防止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> 

我的问题是完全一样说明如下:http://slightlyparanoid.com/?p=11

回答

1

编辑:您是否能使用此方法framebust理由吗?普遍接受的做法是比较self === top,这点我很怀疑会打破任何锚标签:

if (self !== top) { 
    // this script is running in an iframe 
} else { 
    // this script is not running in an iframe 
} 

这将最有可能影响到IE(docs):

  • 点击指向另一个锚文件。
  • 调用anchor.click方法。

要让onbeforeunload事件继续进行而不干扰锚点标记点击,您必须从中返回undefined

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

为了澄清,onbeforeunload期待一个字符串,以便从处理程序,它会在随后一个确认框扔回来。如果您返回undefined,则绕过此操作并继续执行unload事件。

+0

FF和Chrome也出现这种情况,'return undefined'似乎没有解决它。该脚本似乎阻止任何链接工作,而不仅仅是iframe中的重定向。 – kylex 2012-07-27 18:26:55

+0

目的是为了防止大爆炸......我如何使用'self === top'来防止iframe被摧毁? – kylex 2012-07-27 18:38:08

+0

@kylex看我的编辑。 – jbabey 2012-07-27 19:29:26