2016-04-30 33 views
0

我之前發佈過此問題,但onbeforeunload在Windows Chrome中無法使用。我正在使用版本49.0.2623.112米。這裏是我的代碼:onbeforeunload在Windows中無法使用Chrome瀏覽器

<body onbeforeunload="handleBrowserCloseButton();"> 

function handleBrowserCloseButton() { 

//Call method by Ajax call 
alert('Browser close button clicked');  

} 

當我離開頁面或關閉瀏覽器窗口時,什麼都不會發生。任何幫助將不勝感激。

+0

謝謝。其實我試圖執行一些代碼來寫出一個文件。我能夠得到它的工作。 – Rob

回答

1

您需要從回調函數中返回一個非空值,否則您將看不到消息對話框。

所以,你需要改變兩兩件事:

<body onbeforeunload="return handleBrowserCloseButton();"> 

function handleBrowserCloseButton() { 
    return 'Browser close button clicked'; 
} 

除此之外,你應該使用window.addEventListener('beforeunload', ...)代替。

MDN: WindowEventHandlers.onbeforeunload: Notes

此事件時返回一個非空值,系統會提示用戶確認頁面卸載。在大多數瀏覽器中,事件的返回值顯示在此對話框中。在Firefox 4及更高版本中,返回的字符串不會顯示給用戶。相反,Firefox會顯示字符串「此頁面要求您確認您要離開 - 您輸入的數據可能無法保存。」見錯誤588292.

由於功能應該網被濫用,防止用戶的形式離開頁面,像alertconfirm功能將不會在onbeforeunload回調的工作。

MDN: WindowEventHandlers.onbeforeunload: Notes

自2011年5月25日,調用window.alert()window.confirm()window.prompt()方法HTML5規範狀態可以在此事件中被忽略。有關更多詳細信息,請參閱HTML5規範。

+0

謝謝。其實我試圖執行一些代碼來寫出一個文件。我把代碼放在函數中,它工作。 – Rob

+0

@Rod我不是說你不能執行代碼,但你不能使用'alter'來顯示消息。如果您的實際代碼與您的問題不同,那麼您需要顯示您嘗試執行的代碼,而不是有所不同。 –

0
+0

您可以嘗試一下該鏈接的建議,其中指出:您可以並且應該通過window.addEventListener()處理此事件[https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/ addEventListener]和beforeunload [https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload]事件。 –

0
window.onbeforeunload = function() { 

fake(); 
} 

的筆記Checkout部分測試,並在所有瀏覽器中工作。

相關問題