0

我正在尝试禁用单击的链接。我有一个这样的 onmousedown 事件监听器。

if(document.addEventListener){
    document.addEventListener("onmouseover", onMouseOverIdent, false);
    document.addEventListener("onmousedown", onMouseDownIdent, false);
    document.addEventListener("onmouseout", onMouseOutIdent, false);
}else{
    if(document.attachEvent){
        document.attachEvent("onmousedown",onMouseDownIdent);
        document.attachEvent("onmouseover",onMouseOverIdent);
        document.attachEvent("onmouseout", onMouseOutIdent);
    }
}

在我的 onmousedown 函数中,我尝试使用 quirksmode 中的这个函数:

if (!e) var e = window.event;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();

但是,它仍然会单击链接并加载它。我不知道是什么原因造成的,我们将不胜感激。

更新:我忘记提及的另一件事是我正在页面上的所有锚标记元素上执行此操作。这似乎使之后删除这些听众变得更加困难。

4

1 回答 1

5

要使其不遵循 href,您应该使用preventDefault而不是stopPropagation.

对于 IE,你会使用

e.returnValue = false;

所以它应该看起来像这样......

if (!e) var e = window.event;
e.returnValue = false;
if (e.preventDefault) e.preventDefault();

这假设处理程序直接在链接上,由于您已排除相关代码,因此现在无法知道。


还有一件事,你只是在处理这个onmousedown事件。如果您想阻止该行为或禁用实际click事件的冒泡,您应该这样做......

document.addEventListener("click", ...
document.attachEvent("onclick", ...

另外,请注意addEventListener不应"on"作为事件名称的一部分。

于 2012-07-22T20:25:38.053 回答