如何在 JavaScript 中停用 beforeunload 事件侦听器

安德烈·克里斯托加·普拉马蒂亚

我正在尝试激活页面重新加载器阻止程序,并能够停用重新加载程序阻止程序。换句话说,当用户即将卸载/重新加载他们的页面时,我能够显示一个对话框,但我目前正在寻找一种方法,让用户在某个功能之后卸载/重新加载他们的页面而没有任何对话框或警告已被调用。

也许删除事件侦听器会有所帮助?

这是我正在使用的代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <button onclick="activateReloader()">activate</button>
    <button onclick="deactivateReloader()">deactivate</button>
    <script>
        function activateReloader() {
            window.addEventListener('beforeunload', function (e) {
                // Cancel the event
                e.preventDefault();
                // Chrome requires returnValue to be set
                e.returnValue = '';
            });
        }

        function deactivateReloader() {
            window.removeEventListener('beforeunload', function (e) {});
        }
    </script>
</body>

</html>
桑迪·吉福德

removeEventListener通过检查您传递给它的函数的引用来工作,并查看它之前是否由addEventListener. 这意味着如果您想稍后删除侦听器,则不能将其添加为匿名函数 - 您需要对其进行引用:

function onBeforeUnload(e) {
    // Cancel the event
    e.preventDefault();
    // Chrome requires returnValue to be set
    e.returnValue = '';
}

function activateReloader() {
    window.addEventListener('beforeunload', onBeforeUnload);
}

function deactivateReloader() {
    window.removeEventListener('beforeunload', onBeforeUnload);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何删除 iFrame 添加的 beforeunload 事件侦听器?

如何在Java或JavaScript中为事件侦听器提供对象池

在调试时或从JavaScript代码中如何在DOM节点上查找事件侦听器?

如何在 Javascript 中添加带有 HTML 模板文字的事件侦听器?

如何简化 javascript 事件侦听器?

类中的 Javascript 事件侦听器

与浏览器 Javascript 的事件侦听器相比,事件包如何在 node.js 中工作

如何在javascript中为所有事件添加事件侦听器而不单独列出它们?

如何防止在 vanilla javascript 中的事件侦听器中重复?

电子:删除beforeunload事件侦听器

如何将事件侦听器添加到JavaScript中的许多按钮?

如何为我在Javascript中的forEach循环中创建的每个链接分配事件侦听器

当在Javascript中单击子元素时,如何覆盖父事件侦听器?

如何取消侦听器中的自定义 javascript 事件?

反应。如何在创建的侦听器中删除事件侦听器?

如何在EaselJS对象中删除事件侦听器

如何使 JavaScript 事件侦听器减少重复?

访问事件侦听器的 javaScript 中的数组元素

删除for循环javascript中的事件侦听器

在Javascript中向对象添加事件侦听器

Javascript 中的简单事件侦听器不起作用

如何从reactjs中的文档中删除事件侦听器

如何使用事件侦听器单击功能使用 javascript 显示和隐藏数组中的图像

如何在动态字符串的反应js中事件侦听器或单击侦听器?

如何从类方法中删除事件侦听器

如何从正在卸载的背景中删除事件侦听器?

如何删除Aurelia中的事件侦听器?

如何正确删除 vue 3 中的事件侦听器

如何从IFRAME中触发“ beforeunload”事件