有一个html片段,
请问为什么执行顺序是 Func1() -> Func3() -> Func2() ?
<head>
<script>
function Func1(){
//..do something
}
function Func2(){
//..do something
}
function Func3(){
//..do something
}
</script>
</head>
<body>
<div onmousedown='Func1()' id='mydiv'>Something</div>
<script>
var obj=document.getElementById('mydiv');
obj.attachEvent('onmousedown',Func2);
obj.attachEvent('onmousedown',Func3);
</script>
</body>
我看资料好像说最后attach上去的事件应该是最先执行的, 但是为什么 Func1()会被先执行,再执行Func3()呢?
请问为什么执行顺序是 Func1() -> Func3() -> Func2() ?
<head>
<script>
function Func1(){
//..do something
}
function Func2(){
//..do something
}
function Func3(){
//..do something
}
</script>
</head>
<body>
<div onmousedown='Func1()' id='mydiv'>Something</div>
<script>
var obj=document.getElementById('mydiv');
obj.attachEvent('onmousedown',Func2);
obj.attachEvent('onmousedown',Func3);
</script>
</body>
我看资料好像说最后attach上去的事件应该是最先执行的, 但是为什么 Func1()会被先执行,再执行Func3()呢?
但是我希望attach上去的函数先执行应该如何做,或者说我应该怎么做才能先执行我自己的函数才执行它本身的Func1()? 因为我需要在执行它本身的Func1()前,先执行我自己的函数.谢谢...
是客户的代码,不能改的. 我的Func2()和Func3()是注入进去执行的...
你确定他的客户端代码是上面这样的吗?
如果是,那么只要你在F定义之后再定义一个Func1()函数,那么执行的时候就是你定义的那个Func1,而不是他定义的那个。
怎么执行,那当然就是靠onmousedown这个事件来激发了。
var obj=document.getElementById('mydiv');
obj.onmousedown=null;//设置为null移除处理函数
obj.attachEvent('onmousedown',Func1);
obj.attachEvent('onmousedown',Func2);
obj.attachEvent('onmousedown',Func3);
谢谢! 您的解释很好很明白。 那么假如客户的代码的onmousedown里用了this, 我在attachEvent时怎么处理?