我有一个SAP UI5应用程序,我想显示一个框,当用户试图通过我的应用程序外部的方法(点击链接,手动更改URL等)离开屏幕时,会出现一个框。
我看到有一个onWindowBeforeUnload()
方法,但我不确定我在哪里放置此方法或如何调用它。我尝试将它包含在我想要功能的控制器中,但是当我离开时它不会被调用。如果有任何其他功能可以提供这种行为,那也没关系。
这是我在控制器中所做的事情:
onWindowBeforeUnload: function() {
alert("you sure?");
},
我看到这是组件类的一种方法,但我认为这是在开始时创建的;我不太熟悉这个概念。
答案 0 :(得分:1)
有几种不同的方法:
在正文标记
中 <body onbeforeunload='alert("no!!")'>
:
<script>
window.onbeforeunload = function() {
alert('no!!');
}
</script>
请务必使用window.onbeforeunload
而不是onWindowBeforeUnload
。
此外,请确保将代码放在页面的渲染输出中的标记内,或放在包含的javascript文件中。根据您的代码看起来,听起来您使用的是JavaScript库,这就是您使用functionName: function(){ //body }
的原因。您不能使用该方法来覆盖window.onbeforeunload
函数,因为您正在尝试处理窗口子节点内的函数。您必须使用顶级窗口节点并在那里处理该功能。您可以将此代码直接放在<script>
标记或正文标记中。
答案 1 :(得分:1)
我不认为你可以直接从你的控制器覆盖它。您必须在窗口对象本身上覆盖它(根据@ matt-spinks&#39;回答上面的内容)或在Component.js文件上覆盖它(如果您使用的话)。
以下是如何在Component.js文件中执行此操作:
sap.ui.define(["sap/ui/core/UIComponent"], function (UIComponent) {
"use strict";
return UIComponent.extend("company.main.Component", {
// ...
// ...
/**
* Fired before the window closes or moved to another URL
*/
onWindowBeforeUnload: function(oEvent) {
// your code
},
/**
* Fired when the window is closed.
*/
onWindowUnload: function(oEvent) {
// your code
}
});
});