javascript - 如何防止通过浏览器按钮导航而不通过链接导航?

标签 javascript dom-events

我想警告用户,如果他们通过关闭浏览器或使用浏览器的历史记录按钮离开页面using the following JavaScript :

window.onbeforeunload = function(e) {
    return 'Ask user a page leaving question here'; 
};

但无论如何,我网站上的链接和按钮都应该有效。我怎样才能实现这一目标?

最佳答案

首先想到的方法是设置一个变量来告诉您是否单击了链接:

var linked = false;

window.onbeforeunload = function(e) {
    if (!linked)
        return 'Ask user a page leaving question here'; 
};

document.addEventListener('click', function(e) {
    if (e.target.tagName === "A")
        linked = true;
}, false);

也就是说,在文档级别设置一个单击事件处理程序,该处理程序测试单击的元素是否是 anchor (或您想要允许的任何其他元素),如果是,则设置变量。 (显然,这假设您在较低级别没有其他 anchor 元素单击处理程序来停止事件传播。)

关于javascript - 如何防止通过浏览器按钮导航而不通过链接导航?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25975594/

相关文章:

javascript - 你还考虑拨号连接吗?

javascript - 从 DOM 中删除编辑器后如何删除 CKeditor 实例

javascript - 使用 addEventListener 的处理程序中 "this"的值

javascript - 全局 javascript 事件拦截/处理

javascript - 像 YouTube 这样的网站在不触发 popstate 或 beforeunload 的情况下使用什么来更改 URL?

javascript - 使一个 div 的大小等于另一个

javascript - 数组中缺失值用0填充

javascript - React useState 钩子(Hook) - 对象作为 React 子对象无效

javascript - meteor JS : Timing of Accessing MongoDB affects the result of the Access

javascript - 我将使用什么类型的事件处理程序来操纵 div 的大小?