在卸载之前允许执行什么样的操作



我决定在弹出确认退出对话框之前执行一些代码。

然而,onbeforeunload的行为非常令人费解。允许某些操作,不允许某些操作。

function dummy() {
    alert('123');            // Not allowed. Blocked alert('123') during beforeunload
    console.log('123');      // Allowed.
    navigator.vibrate(1000); // Doesn't work in my chrome mobile.
    return "do you exit";
}
window.onbeforeunload = function() {
    return dummy();
}

我想知道,为什么会有这样的行为?是否有有关此行为的文档?

在返回弹出字符串之前,是否有任何解决方法可以克服 navigator.vibrate 上的限制帖子?

我想

你会发现Mozilla开发网络确实有关于这种事情的文档。

引用:

自 2011 年 5 月 25 日起,HTML5 规范规定在此事件期间可以忽略对 window.alert()、window.confirm() 和 window.prompt() 方法的调用。

至于原因,meger在评论中很好地指出,不应该允许网站积极阻止您离开页面。

navigator.vibrate是基于时间的函数。"振动 x 毫秒"。当窗口卸载时,它不希望用户必须等待任何内容。您也许可以找到解决方法,但我怀疑它会被修补,因为这不是理想的功能。

最新更新