正如我们所知,当我们点击浏览器上的刷新按钮时,我们可以弹出询问是否确定刷新页面。通常通过在onbeforeunload上添加事件监听器来完成。
但是,在我的Aurelia应用程序中,我尝试这样做,但它没有用。
让我们说这是我的app.js(root ModelView)
export class App {
this.refreshClicked = () =>{ return "Are you sure you want to exit?"; };
attached(){
window.addEventListener("onbeforeunload", this.refreshClicked);
}
但是它不起作用,但是,如果我们将return语句替换为console.log("clicked")
我可以看到监听器没有任何问题。
任何帮助?
答案 0 :(得分:4)
首先,如果您通过window.addEventListener
添加事件处理程序,则在这种情况下不使用on
前缀。所以它是:
attached() {
window.addEventListener('beforeunload', this.refreshClicked);
}
或旧的,不推荐的语法:
attached() {
window.onbeforeunload(this.refreshClicked);
}
其次,您需要在returnValue
对象上设置Event
属性,并返回相同的字符串值以支持更多浏览器。要了解有关此活动的更多信息(以及各种浏览器怪癖),请查看its MDN page。
您的refreshClicked
应如下所示:
this.refreshClicked = e => {
const confirmation = 'Are you sure you want to exit?';
e.returnValue = confirmation;
return confirmation;
};