微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 无法阻止角度应用程序中的浏览器页面刷新/重新加载

我的网站有 angularjs SPA.当用户点击刷新按钮或按F5 / Ctrl F5我要阻止或中止页面重新加载时.不幸的是,使用onbeforeunload和onunload事件的解决方案无效.实际上,它们被调用,到达event.preventDefault()行,控制台中有任何消息,但浏览器继续加载页面.

我当前的模块.run()代码

let window = angular.element($window);
window.on("beforeunload",(event) => {
    event.preventDefault();
}).on("unload",(event) => {
    event.preventDefault();
});

// This is just for sure that I have my handlers registered 
$window.onbeforeunload = (event) => {
    event.preventDefault();
}

$window.onunload = (event) => {
    event.preventDefault();
}

我怎么能真正处理角度?

UPDATE

我需要这个来重新加载实际状态而不是页面.因此,当用户点击刷新时,我想用$stateProvider重新加载当前状态,而不是重新加载整个页面

解决方法

看看 Mozilla has to say about unload events.看起来不可能像你想的那样阻止刷新.您唯一认为可以做的是询问用户他/她是否真的要离开页面.

我猜你可以在用户回答他/她不想离开当前页面的情况下重新加载当前状态.

window.onbeforeunload = function(event) {
    // do some stuff here,like reloading your current state
    //this would work only if the user chooses not to leave the page
    return 'why would you do that???';
}

我创建了一个fiddle for you.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐