开发者

How to hook up default beforeunload event on an aspx page?

I have a custom web开发者_高级运维 part placed on one of the application page in SharePoint. This page it seems already have a function which gets executed on windows beforeunload Javascript event.

My problem is that I too need to execute some client side code (to prompt user for any unsaved changes in my web part) on windows beforeunload event.

How can I achieve this? I mean let the default event be fired as well as call my function also?

Appreciate any help.


This should be possible by checking for an existing handler assigned to the onbeforeunload event and, if one exists, saving a reference to it before replacing with your own handler.

Your web part might emit the following script output to do this:

<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>

This should allow you to inject your own logic into the page and make your own determination as to what code executes when the page unloads.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜