[英]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.