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
事件可以接受几个参数,我不知道也不知道有哪些参数
因此:
- 有没有简单的解决办法
- 如果没有,我如何知道希望获得哪些参数
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);
};