我正在寻找覆盖事件并仍然预先形成它的行动。
意思是这样的事:
var oldOnError = window.onerror;
window.onerror = function(msg, url, line) {
oldOnError();
};
现在这将被执行但是,onerror
事件可以接受几个参数,我不知道,也不知道哪些是。
所以:
oldOnError
期望得到什么参数?答案 0 :(得分:1)
为什么不使用addEventListener()
var listener = function(msg, url, line) {
// your code
};
if (window.addEventListener) {
window.addEventListener('error', listener, false);
} else if ( window.attachEvent ) { // for versions previous to IE9
window.attachEvent( 'onerror', listener );
}
这样你就不会覆盖现有的事件监听器。
另外需要注意的是,即使指定了3个参数,您的函数在调用时也会传递一个事件对象。所以你的功能应该定义如下。
var listener = function( event ) {
// your code
}
有关详细信息,请查看MDN网站here
答案 1 :(得分:0)
您可以做的一件事是使用apply方法和参数变量:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
var oldOnError = window.onerror;
window.onerror = function(msg, url, line) {
oldOnError.apply(window, arguments);
};
但正如@Bruno所说,只有一个参数应该传递给处理程序(事件)。