使用Javascript检测鼠标点击div没有副作用

时间:2011-01-08 02:10:39

标签: javascript html

我想检测每当有人点击div时(基本上我想知道用户何时与我网站上的一段文字进行交互,通过选择一些文字或点击一个链接),但我不知道我想干涉用户正在做的事情。

如果我在div上放置一个onmousedown或onclick事件,它最终会破坏选择,链接等。有没有办法捕获这些事件而不会造成任何干扰?

4 个答案:

答案 0 :(得分:8)

只要 return false;,Onmousedown或onclick就不应该干扰任何事情。

你可以这样做:

document.getElementById("spy-on-me").onmousedown = function () {
    console.log("User moused down");
    return true; // Not needed, as long as you don't return false
};

如果您有其他脚本通过此方法在页面上附加行为,那么为了防止覆盖它们,您可以执行以下操作:

var spyElement = document.getElementById("spy-on-me");
var oldMousedown = spyElement.onmousedown;
spyElement.onmousedown = function () {
    console.log("User moused down");
    if(oldMousedown) oldMousedown();
};

答案 1 :(得分:2)

是的,我怀疑您在事件绑定结束时正在返回false,只是不要执行此绑定或此绑定中的任何操作:

$('a').click(function(e) {
    e.stopPropagation();
    e.preventDefault();
    return false;
});

如果你不做这三件事,jQuery不会阻止事件冒泡到浏览器。

编辑:很抱歉没有意识到这是一个简单的JavaScript问题。

答案 2 :(得分:0)

您也可以通过添加事件监听器来实现

var myNode= document.querySelector('.imagegrid'); 
myNode.addEventListener("click",function(e){    
 alert(e.target+" clicked"); 
}); 

示例here

答案 3 :(得分:0)

您不能简单地将div事件添加到div吗?

<div id="secretDiv" (click)="secretDivClick()">

然后在您的组件上

secretDivClick() {
console.log('clicked');
}