document.onclick = function(){}如何获得event啊

时间:2022-09-07 11:20:36
晓得原理,但是实在想不出办法来。
想写个获得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();
}
就不行

大神求助

11 个解决方案

#1


document.onclick = function (event){
event=event||window.event;
}

#2


引用 1 楼  的回复:
document.onclick = function (event){
event=event||window.event;
}

++
想复杂了 没意义根本

document.onclick = function bb(e){
var e = getEventTarget(e);
}
试试?

#3


		var getEvent = function(){
return window.event || arguments.callee.caller.arguments[0];
}
document.onclick = function bb(){
var e = getEvent();
alert(e);
}

#4


不想传参啊  就想直接调用方法  然后获得event

#5


引用 3 楼  的回复:
JScript code
        var getEvent = function(){
            return window.event || arguments.callee.caller.arguments[0];
        }
        document.onclick = function bb(){
            var e = getEv……

这个是在onclick方法里面调用bb()?

#6


引用 5 楼  的回复:
引用 3 楼  的回复:

JScript code
var getEvent = function(){
return window.event || arguments.callee.caller.arguments[0];
}
document.onclick = function bb(){
var e = getEv……

这个是在onclick方法里面调用bb()?……
看来你连最根本的东西都没搞清楚。。document.onclick = function bb(){}是把bb函数的引用赋值给document对象的onclick属性,此时document.onclick指向bb这个函数,当我们点击页面时,就会触发click的,浏览器就会调用document.onclick指向的函数并执行,也就是执行了bb(),明白吗?

#7



<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>



#8


引用 6 楼  的回复:
引用 5 楼  的回复:

引用 3 楼  的回复:

JScript code
var getEvent = function(){
return window.event || arguments.callee.caller.arguments[0];
}
document.onclick = function bb(){
var e = getEv……

这个是在on……

晓得了,谢谢

#9


js学没多久  各种写法不是很清楚
等于就是var bb = function(){...},onclick = bb;
这样是吧

#10


引用 6 楼  的回复:
引用 5 楼  的回复:

引用 3 楼  的回复:

JScript code
var getEvent = function(){
return window.event || arguments.callee.caller.arguments[0];
}
document.onclick = function bb(){
var e = getEv……

这个是在on……

js各种写法不怎么清楚
这就跟var bb = function(){...},onclick = bb;
差不多是吧
ff浏览器不是自动创建onclick方法的么,如果onclick指向bb的话还是会传入event啊?

#11


引用 10 楼  的回复:
ff浏览器不是自动创建onclick方法的么,如果onclick指向bb的话还是会传入event啊?
要我说几遍啊,onclick只是一个属性,而document.onclick = bb是一个赋值语句,在赋值语句执行前,document.onclick的值为null
firefox不是自动创建onclick方法,而是会自动将event对象作为参数传入onclick指向的处理函数中。。

#1


document.onclick = function (event){
event=event||window.event;
}

#2


引用 1 楼  的回复:
document.onclick = function (event){
event=event||window.event;
}

++
想复杂了 没意义根本

document.onclick = function bb(e){
var e = getEventTarget(e);
}
试试?

#3


		var getEvent = function(){
return window.event || arguments.callee.caller.arguments[0];
}
document.onclick = function bb(){
var e = getEvent();
alert(e);
}

#4


不想传参啊  就想直接调用方法  然后获得event

#5


引用 3 楼  的回复:
JScript code
        var getEvent = function(){
            return window.event || arguments.callee.caller.arguments[0];
        }
        document.onclick = function bb(){
            var e = getEv……

这个是在onclick方法里面调用bb()?

#6


引用 5 楼  的回复:
引用 3 楼  的回复:

JScript code
var getEvent = function(){
return window.event || arguments.callee.caller.arguments[0];
}
document.onclick = function bb(){
var e = getEv……

这个是在onclick方法里面调用bb()?……
看来你连最根本的东西都没搞清楚。。document.onclick = function bb(){}是把bb函数的引用赋值给document对象的onclick属性,此时document.onclick指向bb这个函数,当我们点击页面时,就会触发click的,浏览器就会调用document.onclick指向的函数并执行,也就是执行了bb(),明白吗?

#7



<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>



#8


引用 6 楼  的回复:
引用 5 楼  的回复:

引用 3 楼  的回复:

JScript code
var getEvent = function(){
return window.event || arguments.callee.caller.arguments[0];
}
document.onclick = function bb(){
var e = getEv……

这个是在on……

晓得了,谢谢

#9


js学没多久  各种写法不是很清楚
等于就是var bb = function(){...},onclick = bb;
这样是吧

#10


引用 6 楼  的回复:
引用 5 楼  的回复:

引用 3 楼  的回复:

JScript code
var getEvent = function(){
return window.event || arguments.callee.caller.arguments[0];
}
document.onclick = function bb(){
var e = getEv……

这个是在on……

js各种写法不怎么清楚
这就跟var bb = function(){...},onclick = bb;
差不多是吧
ff浏览器不是自动创建onclick方法的么,如果onclick指向bb的话还是会传入event啊?

#11


引用 10 楼  的回复:
ff浏览器不是自动创建onclick方法的么,如果onclick指向bb的话还是会传入event啊?
要我说几遍啊,onclick只是一个属性,而document.onclick = bb是一个赋值语句,在赋值语句执行前,document.onclick的值为null
firefox不是自动创建onclick方法,而是会自动将event对象作为参数传入onclick指向的处理函数中。。