提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
使用Javascript,我正在寻找一种方法来使整个页面将用户重定向到另一个页面,而不管他们在页面上单击的位置如何,并且无论该元素是否已经具有click事件监听器。 无论如何,我都想重定向它们。
另外,如果可能的话,我也不想使用固定样式的封面元素,而是让它们单击。
到目前为止,这是我尝试过的方法:
function clickBody()
{
window.location.href = 'http://google.com';
}
document.body.addEventListener("click", clickBody);
它工作得很好,但事实是,如果用户单击锚标记,它不会重定向。
有什么解决方案可以做到这一点吗?
将true
作为最后一个arg添加到addEventListener中(这意味着它是捕获事件,应在常规事件之前进行处理),并停止事件的传播并阻止处理程序中的默认操作,以防止链接单击重定向:
function clickBody(e) {
e.preventDefault();
e.stopPropagation();
window.location.href = 'http://google.com';
}
document.body.addEventListener("click", clickBody, true);
您将要使用事件生命周期的capturing
阶段。 从MDN
在捕获阶段:
浏览器检查元素的最外层祖先()是否在捕获阶段中注册了onclick事件处理程序,如果是,则运行该事件处理程序。 然后,它继续前进到内部的下一个元素并执行相同的操作,然后执行下一个,依此类推,直到到达实际单击的元素。
在冒泡阶段,正好相反:
浏览器检查在冒泡阶段实际单击的元素是否在其上注册了onclick事件处理程序,如果是,则运行该事件处理程序。 然后,它继续前进到下一个直接祖先元素,并执行相同的操作,然后再执行下一个,依此类推,直到到达该元素。
function clickBody()
{
window.location.href = 'http://google.com';
}
document.body.addEventListener("click", clickBody, true);
这里的第三个参数将事件指定为捕获。 https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener
极有可能,javascript应当足够快地执行以击败链接的默认操作。 但是为了安全起见,您可能需要添加event.preventDefault()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.