如何在aspx页面上挂起默认的beforeunload事件?

时间:2010-05-17 07:00:54

标签: asp.net javascript sharepoint javascript-events

我在SharePoint的某个应用程序页面上放置了一个自定义Web部件。这个页面似乎已经有了一个在windows上执行的函数,然后才会加载javascript事件。

我的问题是我还需要在windows beforeunload事件上执行一些客户端代码(以提示用户对我的Web部件中的任何未保存的更改)。

我怎样才能做到这一点?我的意思是让我们触发默认事件以及调用我的函数吗?

感谢任何帮助。

尼基尔。

1 个答案:

答案 0 :(得分: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>

这应该允许您将自己的逻辑注入页面,并自己确定页面卸载时执行的代码。