我想检测每当有人点击div时(基本上我想知道用户何时与我网站上的一段文字进行交互,通过选择一些文字或点击一个链接),但我不知道我想干涉用户正在做的事情。
如果我在div上放置一个onmousedown或onclick事件,它最终会破坏选择,链接等。有没有办法捕获这些事件而不会造成任何干扰?
答案 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');
}