我在SharePoint的某个应用程序页面上放置了一个自定义Web部件。这个页面似乎已经有了一个在windows上执行的函数,然后才会加载javascript事件。
我的问题是我还需要在windows beforeunload事件上执行一些客户端代码(以提示用户对我的Web部件中的任何未保存的更改)。
我怎样才能做到这一点?我的意思是让我们触发默认事件以及调用我的函数吗?
感谢任何帮助。
尼基尔。
答案 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>
这应该允许您将自己的逻辑注入页面,并自己确定页面卸载时执行的代码。