2016-08-04 49 views
1

我想在Firefox中處理beforeunload事件。它工作正常,除了用戶需要手動點擊頁面或在輸入中寫入內容。Firefox除非單擊頁面,否則不會調用`beforeunload`事件

我有以下一段代碼可以在Firefox上使用,但是,只有當我們手動單擊頁面。

<script> 
    popMessage = "Foo"; 
    window.addEventListener("beforeunload", function (e) { 
     (e || window.event).returnValue = popMessage;  //Gecko + IE 
     alert(popMessage); 
     return popMessage; 
    }); 
</script> 

我嘗試添加:

  • document.body.click()
  • <input type='text' autofocus>

兩者都沒有做任何改變。

我也嘗試過使用jQuery,希望它能正確處理它。儘管如此,得到相同的:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
<script> 
    $(window).on('beforeunload', function(){ 
     return 'Are you sure you want to leave?'; 
    }); 
</script> 

這些做工精細的在Chrome,但不能在Firefox瀏覽器。沒有任何希望在頁面上沒有用戶交互的情況下運行它?

回答

1

developer.mozilla.org指出:「要阻止不需要的彈出窗口,瀏覽器可能不會顯示在beforeunload事件處理程序中創建的提示,除非該頁面已與之交互。」所以沒有希望。

+0

哦......對。現在有道理。非常感謝你! –

相關問題