晓得原理,但是实在想不出办法来。
想写个获得event的方法
var getEventTarget = function(){
if(window.event){
return window.event;
}else{
var e = arguments.callee.caller;
while(e.caller!=null){
e = e.caller;
}
return e.arguments[0];
}
}
function aa(){
var e = getEventTarget();
}
onclick="aa()"这样监听倒是可以
但是如果
document.onclick = function bb(){
var e = getEventTarget();
}
就不行大神求助
想写个获得event的方法
var getEventTarget = function(){
if(window.event){
return window.event;
}else{
var e = arguments.callee.caller;
while(e.caller!=null){
e = e.caller;
}
return e.arguments[0];
}
}
function aa(){
var e = getEventTarget();
}
onclick="aa()"这样监听倒是可以
但是如果
document.onclick = function bb(){
var e = getEventTarget();
}
就不行大神求助
event=event||window.event;
}
想复杂了 没意义根本document.onclick = function bb(e){
var e = getEventTarget(e);
}
试试?
return window.event || arguments.callee.caller.arguments[0];
}
document.onclick = function bb(){
var e = getEvent();
alert(e);
}
<script language="javascript">
var GetEvent = function(){
if( window.event ){
return window.event
}else{
var aFunction = function(dArguments, dLevel){
if ( !dArguments ) return null
if ( !dLevel ) return null
for ( var i = 0; i < dArguments.length; i++ ){
if ( dArguments[i] && dArguments[i].altKey !== undefined ) {
return dArguments[i]
}
}
if ( dArguments && dArguments.callee && dArguments.callee.caller && dArguments.callee.caller.arguments ) {
return aFunction(dArguments.callee.caller.arguments, 5-1)
}
}
return aFunction(arguments, 5)
}
}
document.onclick = function(){
var aEvent = GetEvent()
alert(aEvent)
}
</script>
等于就是var bb = function(){...},onclick = bb;
这样是吧
这就跟var bb = function(){...},onclick = bb;
差不多是吧
ff浏览器不是自动创建onclick方法的么,如果onclick指向bb的话还是会传入event啊?
firefox不是自动创建onclick方法,而是会自动将event对象作为参数传入onclick指向的处理函数中。。