刷新页面时 Aurelia 弹出窗口不起作用
Aurelia popup when refreshing the page not working
我们知道,当我们点击浏览器上的刷新按钮时,我们可以弹出一个窗口询问我们是否确定要刷新页面。通常是通过在 onbeforeunload 上添加一个事件监听器来完成。
但是,在我的 Aurelia 应用程序中,我尝试这样做,但它不起作用。
假设这是我的 app.js(根 ModelView)
export class App {
this.refreshClicked = () =>{ return "Are you sure you want to exit?"; };
attached(){
window.addEventListener("onbeforeunload", this.refreshClicked);
}
但是它不起作用,但是,如果我们将 return 语句替换为 console.log("clicked")
,我可以看到侦听器可以正常工作。
有什么帮助吗?
首先,如果您通过 window.addEventListener
添加事件处理程序,那么在这种情况下您不会使用 on
前缀。所以它是:
attached() {
window.addEventListener('beforeunload', this.refreshClicked);
}
或更早的、不推荐的语法:
attached() {
window.onbeforeunload(this.refreshClicked);
}
其次,您需要在 Event
对象和 return 上设置 returnValue
属性 相同的字符串值以支持更多浏览器。要了解有关此事件(以及各种浏览器怪癖)的更多信息,请查看 its MDN page。
您的 refreshClicked
应如下所示:
this.refreshClicked = e => {
const confirmation = 'Are you sure you want to exit?';
e.returnValue = confirmation;
return confirmation;
};
我们知道,当我们点击浏览器上的刷新按钮时,我们可以弹出一个窗口询问我们是否确定要刷新页面。通常是通过在 onbeforeunload 上添加一个事件监听器来完成。
但是,在我的 Aurelia 应用程序中,我尝试这样做,但它不起作用。
假设这是我的 app.js(根 ModelView)
export class App {
this.refreshClicked = () =>{ return "Are you sure you want to exit?"; };
attached(){
window.addEventListener("onbeforeunload", this.refreshClicked);
}
但是它不起作用,但是,如果我们将 return 语句替换为 console.log("clicked")
,我可以看到侦听器可以正常工作。
有什么帮助吗?
首先,如果您通过 window.addEventListener
添加事件处理程序,那么在这种情况下您不会使用 on
前缀。所以它是:
attached() {
window.addEventListener('beforeunload', this.refreshClicked);
}
或更早的、不推荐的语法:
attached() {
window.onbeforeunload(this.refreshClicked);
}
其次,您需要在 Event
对象和 return 上设置 returnValue
属性 相同的字符串值以支持更多浏览器。要了解有关此事件(以及各种浏览器怪癖)的更多信息,请查看 its MDN page。
您的 refreshClicked
应如下所示:
this.refreshClicked = e => {
const confirmation = 'Are you sure you want to exit?';
e.returnValue = confirmation;
return confirmation;
};