<script>
window.onload = function() {
var a = document.getElementById("test"); a.onclick = function(e) {
alert("跳不了"); stopDefault(e);
}
} function stopDefault( e ) {
if ( e && e.preventDefault )
e.preventDefault();
else {
window.event.returnValue = false;
}
return false;
}
</script><a href="www.baidu.com" id="test">点我</a><script>
function stopDefault( e ) {
if ( e && e.preventDefault )
e.preventDefault();
else {
window.event.returnValue = false;
}
return false;
} function test(e) {
alert("跳不了"); stopDefault(e);
}
</script>
<a href="www.baidu.com" id="test" onclick="test(e)">点我</a>
第一段代码可以成功阻止a标签的默认事件,但第二段代码就报undefined e的错误,为什么啊?
alert(arguments.callee.caller);
}然后你在各个浏览器下看看输出,应该明白为啥必须要传event了,chrome和opera下也支持直接获取window.event了哦。
不好意思我是新手,弹出的信息没看懂我这有firebug,要怎么看呢?
我知道e是一个参数,但为什么第一段代码中可以用e当形参,第二段不行呢?
在标准的事件模型中,argument[0]即你用的这个"e"会被当作事件数据载体,会没有问题,但IE的实现很特殊,传入"e"与传入"event"是有很大区别的,"e"未在其他位置声明过便等于传入一个undefined,传"event"等于引用window.event对象,于是IE下就不会实现。