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 的大多数任务变得更加容易,并且可以平滑事件模型和其他事物的实现差异。

For instance that code could be rewritten with jQuery as

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

Generally speaking, attaching events to the document or body is a bad idea. This jQuery code looks for any elements that have the .box class and attaches the mousedown handler directly to them.

于 2013-03-29T09:00:11.930 回答