Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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/4/oop/2.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_Oop_Events_Dom Events - Fatal编程技术网

Javascript 如何覆盖事件并仍然预执行旧事件?

Javascript 如何覆盖事件并仍然预执行旧事件?,javascript,oop,events,dom-events,Javascript,Oop,Events,Dom Events,我正在寻找覆盖事件,并且仍然执行它的操作 意思是这样的: var oldOnError = window.onerror; window.onerror = function(msg, url, line) { oldOnError(); }; 现在将执行,但是onerror事件可以接受几个参数,我不知道也不知道有哪些参数 因此: 有没有简单的解决办法 如果没有,我如何知道希望获得哪些参数 为什么不使用addEventListener() 这样就不会覆盖现有的事件侦听器 另外需要注意的是,

我正在寻找覆盖事件,并且仍然执行它的操作

意思是这样的:

var oldOnError = window.onerror;
window.onerror = function(msg, url, line) {
 oldOnError();
};
现在将执行,但是
onerror
事件可以接受几个参数,我不知道也不知道有哪些参数

因此:

  • 有没有简单的解决办法
  • 如果没有,我如何知道希望获得哪些参数

为什么不使用addEventListener()

这样就不会覆盖现有的事件侦听器

另外需要注意的是,即使指定了3个参数,调用函数时也会传递一个事件对象。所以你的函数应该定义如下

var listener = function( event ) {
    // your code
}

查看MDN站点了解更多信息

为什么不使用addEventListener()

这样就不会覆盖现有的事件侦听器

另外需要注意的是,即使指定了3个参数,调用函数时也会传递一个事件对象。所以你的函数应该定义如下

var listener = function( event ) {
    // your code
}

查看MDN站点了解更多信息

您可以做的一件事是使用apply方法和arguments变量:


但是正如@Bruno所说,无论如何只应该向处理程序(事件)传递一个参数。

可以做的一件事是使用apply方法和arguments变量:



但正如@Bruno所说,无论如何,只有一个参数应该传递给处理程序(事件)。

您可以使用jQuery或类似的工具吗?它是否需要在IE8这样的旧浏览器中工作?所有支持window.onerror的浏览器,所以,是的。只是向错误事件添加另一个事件侦听器不是一个选项吗?我需要不管发生什么事情,最后执行该事件,这似乎是一种确保这一点的方法,通过添加一个事件,我猜它是按FIFO顺序设置的。我可以用
addEventListener
控制顺序吗?你可以使用jQuery或类似的工具吗?它需要在IE8这样的旧浏览器中工作吗?好的,所有支持window.onerror的浏览器都可以,所以是的。只需在错误事件中添加另一个事件监听器不是一个选项吗?我需要最后执行该事件,不管发生什么,这似乎是一种确保这一点的方法,通过添加一个事件,我猜它是按FIFO顺序设置的。我可以用
addEventListener
控制订单吗?它们将以什么顺序执行?输入顺序?我能控制这个顺序吗?@eric.itzhak首先发生的是
onerror
,这就是被监听的内容。一旦它启动,
监听器
函数就启动了。完美的话,我不知道。非常感谢布鲁诺和瑞安!签名是
“error”
,而不是
“onerror”
,这在像这样的浏览器中不起作用IE8@Esailija非常感谢。正确答案。他们将按什么顺序执行?输入顺序?我能控制这个顺序吗?@eric.itzhak首先发生的是
onerror
,这就是被监听的内容。一旦它启动,
监听器
函数就启动了。完美的话,我不知道。非常感谢布鲁诺和瑞安!签名是
“error”
,而不是
“onerror”
,这在像这样的浏览器中不起作用IE8@Esailija非常感谢。正确答案。
var oldOnError = window.onerror;
window.onerror = function(msg, url, line) {
    oldOnError.apply(window, arguments);
};