2010-05-17 61 views
0

我有一個自定義Web部件放置在SharePoint中的應用程序頁面之一。這個頁面似乎已經有一個函數,它可以在unload javascript事件之前在windows上執行。如何掛接aspx頁面上的默認beforeunload事件?

我的問題是,我也需要執行一些客戶端代碼(以提示用戶在我的web部分中的任何未保存的更改)在windows beforeunload事件。

我該如何做到這一點?我的意思是讓默認事件被觸發以及調用我的函數呢?

感謝任何幫助。

Nikhil。

回答

2

這應該是可能的,方法是檢查分配給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> 

這應該讓你注入自己的邏輯到頁面,讓你自己決定,以什麼代碼執行的頁面卸載時。