刷新页面无效时Aurelia弹出窗口

时间:2018-02-12 19:30:20

标签: aurelia onbeforeunload aurelia-binding aurelia-router

正如我们所知,当我们点击浏览器上的刷新按钮时,我们可以弹出询问是否确定刷新页面。通常通过在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")我可以看到监听器没有任何问题。

任何帮助?

1 个答案:

答案 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;
};