1

重複の可能性:
Jquery では、プログラムによるクリックとユーザーのクリックをどのように見分けることができますか?

ブラウザによっては、javascript を使用してリンクを「クリック」する方法がいくつかあります。

IE (IE9 より前)

要素.クリック(); element.fireEvent('クリック');

他のブラウザは次を使用します。

element.dispatchEvent(evt) ここで、evt はマウスクリック イベントです。

実際のエンド ユーザー アクションが、特定のリンクでのイベントの発信者であることを確認したいと考えています。私が現在使用している手法は、これらのメソッドをオーバーライドしてクリック イベントを除外することですが、メソッドを使用する前にメソッドをプロトタイプ バージョンに戻すことで簡単に無効にできます。

ユーザーの直接的なアクション (実際に要素をクリックした) の結果としてクリック イベントが発生しているかどうかを判断する信頼できるクロス ブラウザーの方法はありますか。

4

1 に答える 1

2

Chrome、Firefox、Operaでは、Event.detailプロパティが事前定義されていない場合は、プロパティを使用できますinitUIEvent()

element.addEventListener('click', clickHandler, false);
function clickHandler (e) {
    if(e.detail > 0) {
        /* 1 = user click */
    } else {
        /* 0 = JS click */
    }
    return;
}

残念ながら、IE9ではどちらの場合もe.detail戻ります1(古いIEではまったく機能しません)。クリックイベントのソースに関係なく、IEではイベントプロパティがすべてまったく同じであるようです(IE <9を含む、10はわかりません)。

于 2012-09-14T20:51:57.693 に答える