2011-07-17 8 views
2

私がボタンを持っている、と私はそのボタンをトリガーすることを決めた:クリックイベントが物理的にマウスでクリックされたかどうかを確認しますか?

$(button_name).trigger("click"); 

機能のハンドラは、マウスを使用してトリガするとき、左ボタンがクリックをトリガーすることを要求するだけでなく、コードを使用してトリガすることにより、クリックを受け付けません上の行のように。そのような条件が真であるかどうかを評価する条件文を作成するにはどうすればよいですか?

if((navigator.appName === "Microsoft Internet Explorer" && window.event.button === 1) 
    || window.event.button == 0 
    || ...){ 

    /* If true, do this */ 
} 
+0

私はあなたが2つを区別するために見つけることができると思いますが、パッチ適用(エミュレート)できます。 – bart

答えて

4

クリックハンドラの最初の引数はイベントオブジェクトです。実際のマウスクリックの場合はclientXclientYというプロパティがあります。プログラムの場合はそうではありません。あなたは完全なクロスブラウザのサポートや将来性、それを持ってしようとしている場合、私はあなたができるとは思わない

$('#button').click(function (e) { 
    if (e.clientX) { 
     // physical click 
    } else { 
     // program click 
    } 
}); 
+0

['originalEvent'](http://stackoverflow.com/questions/6674669/in-jquery-how-can-i-tell-between-a-programatic-and-user-click/6674806#6674806)が優れています'clientX'がゼロの場合はどうなりますか? –

+0

ちょっと良い点。あなたの答えは上にリンクされています。 – evan

0

、「それはプロパティの追加と変更することになるとjsが著しく準拠していますが、私の質問は、あなたは? "マウスクリックをシミュレートする機能が、実際にはかなりの時間とエネルギーを節約しています。

+1

私はそれは重要ではないが、['originalEvent']をチェックすることに同意します(http://stackoverflow.com/questions/6674669/in-jquery-how-can-i-tell-between-a-programatic- and user-click/6674806#6674806)jQueryイベントのプロパティは非常に優れたものです。 jQueryがすべてのイベントをラップして正規化しなかった場合、おおよその解決策が十分でない限り、おそらく運がうまくいかないでしょう。 –

+0

@mu問題は、このタイプのものをバストしようとすることに何時間も時間を費やすことを本当に喜んでいない限り、本当に効果的でしょうか?私は、この場合のコストに見合った努力を見ていない。 – cwallenpoole

+0

このケースでは、この騒動がすべて価値があるかどうかを知るには十分な詳細がありません。しかし、jQueryがイベントをラップするので、ブラウザ間の問題を気にする必要はありません。そのため、jQueryが何をしているのか気にする必要があります。いずれにしても、おそらくそれを心配するのは無意味です。 –

関連する問題