這應該是可能的,方法是檢查分配給onbeforeunload
事件的現有處理程序,如果存在,則在用自己的處理程序替換之前保存對其的引用。
Web部件可能會發出以下腳本輸出做到這一點:
<script type="text/javascript">
// Check for existing handler
var fnOldBeforeUnload = null;
if (typeof(window.onbeforeunload) == "function") {
fnOldBeforeUnload = window.onbeforeunload;
}
// Wire up new handler
window.onbeforeunload = myNewBeforeUnload;
// Handler
function myNewBeforeUnload() {
// Perform some test to determine if you need to prompt user
if (unsavedChanges == true) {
if (window.confirm("You have unsaved changes. Click 'OK' to stay on this page.") == true) {
return false;
}
}
// Call the original onbeforeunload handler
if (fnOldBeforeUnload != null) {
fnOldBeforeUnload();
}
}
</script>
這應該讓你注入自己的邏輯到頁面,讓你自己決定,以什麼代碼執行的頁面卸載時。