为什么我的代码中的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中。
答案 0 :(得分:1)
Firefox要求将事件显式定义为处理程序的参数。
你可以这样写:
document.onmousedown = function(e) {
e = e || window.event;
var target = e.srcElement || e.target || e.currentTarget;
if (target.className == "box") {
alert("Yeah");
}
};
答案 1 :(得分:0)
Firefox不支持window.event
,因为它不是任何标准的一部分,Microsoft在事件标准化之前将其创建为其专有事件模型的一部分。
忘记这些差异,even the standard DOM is a mess。这就是为什么开始创建JS DOM库的原因,它们使得处理DOM的大多数任务变得更加容易和平滑,而不是事件模型和其他事物的实现差异。
例如,可以使用jQuery将代码重写为
$('.box').mousedown(function(){
alert("Yeah");
});
一般来说,将事件附加到文档或正文是一个坏主意。此jQuery代码查找具有.box
类的任何元素,并将mousedown
处理程序直接附加到它们。