2012-07-27 64 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