1

オーバーライドイベントを探していますが、それでもアクションを実行します。

このような意味:

var oldOnError = window.onerror;
window.onerror = function(msg, url, line) {
 oldOnError();
};

これで実行されますonerrorイベントはいくつかの引数を受け入れる可能性があり、どれが存在するかはわかりません。

それで :

  • これに対する簡単な解決策はありますか?
  • そうでない場合、どのパラメーターoldOnErrorが取得されることを期待しているのかをどのように知ることができますか?
4

2 に答える 2

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 );
}

そうすれば、既存のイベントリスナーを上書きしません。

もう1つの注意点は、3つの引数を指定しても、呼び出されたときに関数にイベントオブジェクトが渡されることです。したがって、実際には、関数は次のように定義する必要があります。

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

詳細については、こちらのMDNサイトをご覧ください。

于 2012-11-28T15:09:50.067 に答える
0

あなたができることの1つは、applyメソッドとarguments変数を使用することです。

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 /申し込み

var oldOnError = window.onerror;
window.onerror = function(msg, url, line) {
    oldOnError.apply(window, arguments);
};

しかし、@ Brunoが言うように、とにかく1つの引数だけをハンドラー(イベント)に渡す必要があります。

于 2014-01-17T19:43:35.353 に答える