在javascript中定义事件后函数的执行顺序
在阅读之前,我已经读到了这篇文章:但它没有帮助。事实上 我有一个匿名函数,定义如下:在javascript中定义事件后函数的执行顺序,javascript,events,Javascript,Events,在阅读之前,我已经读到了这篇文章:但它没有帮助。事实上 我有一个匿名函数,定义如下: <input type="button" name="blablabla" value="Send" onclick="javascript:blablabla"> 因此,我想在匿名函数之前调用我的函数(check),但是,使用相同的事件。我不知道我是否完全可以理解。。。谢谢你 编辑:对不起,伙计们,我的代码以前有一个bug,是的,代码是内联的,我明天会尝试所有的解决方案,谢谢伙计们,如果(并且仅
<input type="button" name="blablabla" value="Send" onclick="javascript:blablabla">
因此,我想在匿名函数之前调用我的函数(check),但是,使用相同的事件。我不知道我是否完全可以理解。。。谢谢你
编辑:对不起,伙计们,我的代码以前有一个bug,是的,代码是内联的,我明天会尝试所有的解决方案,谢谢伙计们,如果(并且仅当)使用内联onclick=“…”
处理程序附加现有处理程序,您可以获取其值,然后覆盖它:
window.onload = function() {
var el = document.getElementById('InsertButton');
var old_click = el.onclick;
el.onclick = undefined;
el.addEventListener('click', function() {
check();
old_click(this);
});
}
如果(且仅当)使用内联onclick=“…”
处理程序附加现有处理程序,则可以获取其值,然后覆盖它:
window.onload = function() {
var el = document.getElementById('InsertButton');
var old_click = el.onclick;
el.onclick = undefined;
el.addEventListener('click', function() {
check();
old_click(this);
});
}
为什么不创建自己的处理程序
Element.prototype.myEventListener=function(name,func){
this.addEventListener(name,function(){
if(!check()){return;}
func();
});
};
现在您可以执行以下操作:
document.body.myEventListener("click",function(){
alert("t");
});
Check将始终在注册的处理程序之前调用。
注意,要阻止呼叫,check必须返回false:
function check(){
return false;//no custom eventlistener fires
return true;//all will fire
}
为什么不创建自己的处理程序
Element.prototype.myEventListener=function(name,func){
this.addEventListener(name,function(){
if(!check()){return;}
func();
});
};
现在您可以执行以下操作:
document.body.myEventListener("click",function(){
alert("t");
});
Check将始终在注册的处理程序之前调用。
注意,要阻止呼叫,check必须返回false:
function check(){
return false;//no custom eventlistener fires
return true;//all will fire
}
使用
useCapture
可以在事件向下移动到按钮时截获事件。此时,您可以执行检查,如果检查失败,您可以调用
stopPropagation
,以防止它到达附加到冒泡阶段的处理程序
而且,从本质上讲,事件在管理执行顺序方面相当糟糕。一般来说,它们取决于听者的注册顺序
//无法控制且无法更改的代码
var btn=document.getElementById(“问候者”);
btn.addEventListener(“单击”,函数(){
console.log(“你好”);
})
//您可以稍后添加的代码
函数检查(){
返回Math.random()>0.5;
}
window.addEventListener(“单击”,函数(e){
var greeter=document.getElementById(“greeter”);
如果(e.target==迎宾员&&!check()){
e、 停止传播();
}
},对)
hello world
使用useCapture
可以在事件向下移动到按钮时拦截事件。此时,您可以执行检查,如果检查失败,您可以调用
stopPropagation
,以防止它到达附加到冒泡阶段的处理程序
而且,从本质上讲,事件在管理执行顺序方面相当糟糕。一般来说,它们取决于听者的注册顺序
//无法控制且无法更改的代码
var btn=document.getElementById(“问候者”);
btn.addEventListener(“单击”,函数(){
console.log(“你好”);
})
//您可以稍后添加的代码
函数检查(){
返回Math.random()>0.5;
}
window.addEventListener(“单击”,函数(e){
var greeter=document.getElementById(“greeter”);
如果(e.target==迎宾员&&!check()){
e、 停止传播();
}
},对)
hello world
此(其他)匿名函数如何绑定到事件?通过html代码中的onclick=“”)此(其他)匿名函数如何绑定到事件?通过html代码中的onclick=“”