私は現在、ホストアプリケーションによって提供される外部オブジェクトモデルを利用するIEのみのプロジェクトに取り組んでいます。Internet Explorerでは、ブラウザコンポーネントを介してこの外部オブジェクトにアクセスできます:http: //msdn.microsoft.com/en-us/library/ie/ms535246 (v = vs.85).aspx
オブジェクトへのアクセスは、次のようなJavaScript関数呼び出しの形式を取ります。
external.MethodName(arg1, arg2);
アプリケーションフローに対する最近の変更の1つは、これらのJavaScript呼び出しの周りに数千とは言わないまでも数百のifステートメント条件を導入します。
if (X) {
external.MethodName(arg1, arg2);
} else {
// do something else
}
潜在的に数千のHTMLファイルを変更するのではなく、if条件が1つの場所にのみ表示されるように、外部オブジェクトの関数をオーバーライドまたは書き換えることができれば意味があるように思われます。通常、これはJavaScriptで次のように実行できます。
external.OldMethodName = external.MethodName;
external.MethodName = function(arg1, arg2) {
if (X) {
external.OldMethodName(arg1, arg2);
} else {
// do something else
}
};
ただし、この方法では外部ホストメソッドを参照できないため、「無効なプロシージャの呼び出しまたは引数」スクリプトエラーが発生します。
外部メソッドを直接変更するためのホストアプリケーション独自のコードにアクセスできません。
JavaScriptを使用して外部オブジェクトの関数をオーバーライドする方法はありますか、または(潜在的な)数千の呼び出しをifステートメントでラップする必要がありますか(非常に悪い習慣)?
更新:クライアントと何度もやり取りした後、サードパーティベンダーに連絡して、外部ホストメソッドを更新することができました。これは、フロントエンドでメソッドをラップする方法よりもはるかに望ましい方法です。その間、私はポールの答えを受け入れました。