页面中间单击侦听器
Page Middle Click Listener
我需要弹出警报,当我使用中间点击,它必须不弹出,如果我点击链接,但在页面的任何其他元素(或只是在空白空间)。
var test = {
pageMiddleClickListener : function(e) {
if(e.which === 2) {
//if (!gContextMenu.onLink) {
alert('ok');
//}
}
}
window.addEventListener("click",test.pageMiddleClickListener,false);
当我在链接上使用中键时,会显示警告,但我需要防止链接
出现这种行为我需要一些像"!gContextMenu。
有多种方法可以测试点击的target
是否为链接。一种方法是检查Element.tagName
是否为A
,另一种方法是测试href
的性质。事实证明,测试目标的parentNode
是否有链接也是必要的。
var test = {
pageMiddleClickListener : function(e) {
if(e.button === 1) {
if (!test.isLinkOrAParentIsLink(e.target)) {
e.view.alert('ok');
}
}
},
isLinkOrAParentIsLink : function(el) {
if (el.tagName === "A") {
return true;
} //else
let parent= el.parentNode;
while (parent !== null && typeof parent.tagName !== "undefined") {
if (parent.tagName === "A") {
return true;
} //else
parent= parent.parentNode;
}
return false;
}
}
window.addEventListener("click",test.pageMiddleClickListener,false);
或
isLinkOrAParentIsLink : function(el) {
if (el.hasAttribute("href")) {
return true;
} //else
let parent= el.parentNode;
while (parent !== null && typeof parent.tagName !== "undefined") {
if (parent.hasAttribute("href")) {
return true;
} //else
parent= parent.parentNode;
}
return false;
}
注意:我将e.which
更改为e.button
,因为这是点击事件的规范,MouseEvent.which
是非标准的。注意,这也需要测试e.button === 1
而不是2。
您可以使用prop
方法检查是否单击了<a>
。
$(this).prop("tagName") == "A"
在您的事件侦听器中:
var test = {
pageMiddleClickListener : function(e) {
if(e.which === 2) {
// not an <a> ?
if ($(this).prop("tagName") !== "A") {
alert('ok');
}
}
}
window.addEventListener("click",test.pageMiddleClickListener,false);
相关文章:
- 如果侦听器附加到父元素,是否可以区分单击发生在哪个子元素上
- 谷歌地图v3侦听器(单击)-更改URL
- 为左键或右键单击附加事件侦听器-onclick'右键单击无效
- 单击时的Javascript事件侦听器未按预期工作
- 单击“ExtJS”中的“事件/侦听器”
- 关闭菜单,单击带有事件侦听器和父节点的正文
- Ext JS,项目单击侦听器似乎不起作用
- 在“JQuery 模式”对话框中指定图像单击侦听器
- Javascript 单击侦听器获取类
- 单击事件侦听器关闭困难
- 事件侦听器单击不起作用
- 如何使用 href 并单击侦听器进行收集
- 事件侦听器在单击/提交时未触发
- 单击链接时的 Javascript 操作顺序 - 链接启动或附加到 id 的侦听器触发
- 阻止 JQuery 单击侦听器
- Jquery (2.2.0) 单击侦听器在使用 .on() 时单击几下后停止工作,但 .click() 工作正常
- j查询输入按钮单击事件侦听器
- 侦听器单击任何元素并读取特定的 HTML-5 自定义属性(如果存在)
- 如何在事件侦听器单击后将ID传递给函数
- 谷歌地图标记事件侦听器点击