想写个获得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;
}
event=event||window.event;
}
#2
++
想复杂了 没意义根本
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
这个是在onclick方法里面调用bb()?
#6
看来你连最根本的东西都没搞清楚。。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
晓得了,谢谢
#9
js学没多久 各种写法不是很清楚
等于就是var bb = function(){...},onclick = bb;
这样是吧
等于就是var bb = function(){...},onclick = bb;
这样是吧
#10
js各种写法不怎么清楚
这就跟var bb = function(){...},onclick = bb;
差不多是吧
ff浏览器不是自动创建onclick方法的么,如果onclick指向bb的话还是会传入event啊?
#11
要我说几遍啊,onclick只是一个属性,而document.onclick = bb是一个赋值语句,在赋值语句执行前,document.onclick的值为null
firefox不是自动创建onclick方法,而是会自动将event对象作为参数传入onclick指向的处理函数中。。
firefox不是自动创建onclick方法,而是会自动将event对象作为参数传入onclick指向的处理函数中。。
#1
document.onclick = function (event){
event=event||window.event;
}
event=event||window.event;
}
#2
++
想复杂了 没意义根本
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
这个是在onclick方法里面调用bb()?
#6
看来你连最根本的东西都没搞清楚。。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
晓得了,谢谢
#9
js学没多久 各种写法不是很清楚
等于就是var bb = function(){...},onclick = bb;
这样是吧
等于就是var bb = function(){...},onclick = bb;
这样是吧
#10
js各种写法不怎么清楚
这就跟var bb = function(){...},onclick = bb;
差不多是吧
ff浏览器不是自动创建onclick方法的么,如果onclick指向bb的话还是会传入event啊?
#11
要我说几遍啊,onclick只是一个属性,而document.onclick = bb是一个赋值语句,在赋值语句执行前,document.onclick的值为null
firefox不是自动创建onclick方法,而是会自动将event对象作为参数传入onclick指向的处理函数中。。
firefox不是自动创建onclick方法,而是会自动将event对象作为参数传入onclick指向的处理函数中。。