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();

ただし、リンクをクリックしてロードすることはできます。何が原因なのかわからないので、助けていただければ幸いです。

更新: 言及するのを忘れていたもう 1 つのことは、ページ上のすべてのアンカー タグ要素に対してこれを行っていることです。これにより、後でこれらのリスナーを削除することがより問題になっているようです。

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();

これは、ハンドラーがリンク上に直接あることを前提としていますが、関連するコードを除外しているため、現時点ではわかりません。


もう1つ、あなたはonmousedownイベントでのみ作業しています。動作を防止したり、実際のイベントのバブリングを無効にしたい場合は、次のclickことを行う必要があります...

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

また、イベント名の一部としてaddEventListener含めるべきではないことに注意してください。"on"

于 2012-07-22T20:25:38.053 に答える