Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中定义事件后函数的执行顺序_Javascript_Events - Fatal编程技术网

在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=“”