2016-08-15 126 views
0

所以我有這個頁面加載一個iframe與外部內容(不同的域名)。 現在下面的腳本部分加載另一個JS功能的iframe負載5秒後:當瀏覽器停止按鈕或ESC按下時停止JS

document.getElementById('" . $hash . "').onload = function() { 
window.setTimeout('kernelInit(\'" . $hash . "\')', 5000); 
    if ($(this).height() == 0) { 
    window.location = 'stop.html'; 
    } 
    if ($(this).width() == 0) { 
    window.location = 'stop.html'; 
    } 
}; 

都好到現在。但是,用戶可以單擊瀏覽器停止按鈕或按ESC鍵,從而防止iframe內容完全加載或完全加載。所以上面的JS檢查是無用的,因爲它無法檢查iframe內容是否被加載,或者如果用戶手動停止加載。

我知道必須有解決方案。也許創建然後每X毫秒檢查用戶和服務器之間的連接?理論上如果取消(通過瀏覽器停止按鈕或ESC鍵)應該取消進一步加載任何javascript。 此處的目標是在導航停止或取消時不完成上述腳本。

任何指針? 謝謝。

+2

爲什麼你需要在一個iframe加載其他頁面? –

+0

廣告顯示在iframe中。用戶可以通過激勵來查看這些廣告。如果用戶停止加載廣告,那麼我們有問題。 – Ivan

+0

正在加載的框架並不一定意味着廣告正在顯示。只要用戶可以用一些自定義的CSS來隱藏它們。另一種方法是通過XHR通過服務器或其他允許跨域的服務器獲取內容。 –

回答

1

嘗試類似,對於Esc鍵選項

$(document).keyup(function(e) { 
    if (e.keyCode == 27) { 
     alert("Esc was pressed") 
    } 
}); 

因爲我不知道該怎麼辦了瀏覽器的取消按鈕。 將警報更改爲您想要執行的事件。

https://jsfiddle.net/aLot1mky/