1

コード内の event.target が Firefox で実行できないのはなぜですか?

 <script> 
    document.onmousedown = function(){
     var e = window.event;
     var target = e.srcElement || e.target || e.currentTarget;
     if(target.className == 'box'){
     alert("Yeah");
     }
     }
    </script>



<body>
  <div class="box" style="border:1px dotted #CC3366; width:300px; height:100px;">Click Me!!</div>
  <a href="#" class="box">Link</a>
 </body>

IE や Chrome では実行できますが、Firefox では実行できません。

4

2 に答える 2

1

Firefox では、イベントをハンドラーのパラメーターとして明示的に定義する必要があります。

次のように書くことができます:

document.onmousedown = function(e) {
    e = e || window.event;
    var target = e.srcElement || e.target || e.currentTarget;
    if (target.className == "box") {
        alert("Yeah");
    }
};
于 2013-03-29T07:00:50.477 に答える
0

Firefox はwindow.event標準の一部ではないため、サポートしていません。Microsoft は、イベントが標準化される前に独自のイベント モデルの一部として作成しました。

こういう違いを忘れると、標準の DOM もぐちゃぐちゃ。そのため、JS DOM ライブラリが作成され始めました。これにより、DOM を扱うほとんどのタスクがはるかに簡単になり、イベント モデルやその他の実装の違いがスムーズになります。

たとえば、そのコードはjQueryで次のように書き直すことができます。

$('.box').mousedown(function(){
  alert("Yeah");
});

一般的に言えば、ドキュメントや本文にイベントを添付することはお勧めできません。この jQuery コードは、クラスを持つ要素を検索し、ハンドラーをそれらに直接.boxアタッチします。mousedown

于 2013-03-29T09:00:11.930 に答える