繁体   English   中英

如何在aspx页面上连接默认的beforeunload事件?

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

我在 SharePoint 中的应用程序页面之一上放置了一个自定义 Web 部件。 这个页面似乎已经有一个函数可以在windows 上执行beforeunload Javascript 事件之前。

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

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

感谢任何帮助。

这应该可以通过检查分配给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>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM