簡體   English   中英

為什么我的代碼中的event.target無法在firefox中運行?

[英]Why is event.target in my code can't run in firefox?

為什么我的代碼中的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中運行。

Firefox要求將事件明確定義為處理程序的參數。

您可以這樣寫:

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

Firefox不支持window.event因為它不是任何標准的一部分,Microsoft在事件標准化之前將其創建為其專有事件模型的一部分。

忘記了這些差異, 即使是標准DOM也是一團糟 這就是為什么開始創建JS DOM庫的原因,它們使處理DOM的大多數任務變得更加輕松和順暢,從而消除了事件模型和其他方面的實現差異。

例如,可以使用jQuery將代碼重寫為

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

一般來說,將事件附加到文檔或正文是個壞主意。 此jQuery代碼查找具有.box類的任何元素,並將mousedown處理程序直接附加到它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM