JavaScript获取事件对象
piaoling 2011-07-14 10:58:43
IE中事件对象是window的一个属性,在标准DOM中,事件对象是处理函数的一个参数。
测试1:
<button id="but">按钮</button>
<script type="text/javascript">
var but = document.getElementById("but");
function func(){
var e = window.event || arguments[0];
alert(e.type);
}
if(window.attachEvent)
but.attachEvent("onclick",func);
else
but.addEventListener("click",func,false);
</script>
<script type="text/javascript">
var but = document.getElementById("but");
function func(){
var e = window.event || arguments[0];
alert(e.type);
}
if(window.attachEvent)
but.attachEvent("onclick",func);
else
but.addEventListener("click",func,false);
</script>
测试2:
<button id="but">按钮</button>
<script type="text/javascript">
document.getElementById("but").onclick = func;
function func(){
var e = window.event || arguments[0];
alert(e.type);
}
</script>
<script type="text/javascript">
document.getElementById("but").onclick = func;
function func(){
var e = window.event || arguments[0];
alert(e.type);
}
</script>
测试3:
<button id="but" onclick="func();">按钮</button>
<script type="text/javascript">
function func(){
var e = window.event || arguments[0];
alert(e.type);
}
</script>
<script type="text/javascript">
function func(){
var e = window.event || arguments[0];
alert(e.type);
}
</script>
在测试1和测试2中,IE和Firefox都能输出"click";而在测试3中,只有IE能输出“click”,Firefox中提示错误“e is undefined”。 要使在Firefox中也能捕获到事件,需给函数添加参数,即<button id="but" onclick="func(event);">按钮</button>,实际上此时在任何浏览器中都能捕获到事件对象,不需要在针对 不同浏览器作判断了。
发表评论(评论将通过邮件发给作者):