ブラウザヘルパーオブジェクト(BHO)として実装されたIE拡張機能があります。ページの他のスクリプトがローカルスクリプトファイルを動的にロードするためにそれを使用できるように、ページのウィンドウオブジェクトに追加するC++で記述されたユーティリティ関数があります。ただし、これらのローカルスクリプトファイルへの相対パスを解決するには、関数を呼び出すJavaScriptファイルのパスを決定する必要があります。
myfunc()
C ++で記述され、ページのJavaScriptに公開されています- file:///path/to/some/javascript.js
- (追加のスタックフレーム)
myfunc()
トップフレームから、スクリプト呼び出しがfile:///path/to/some/javascript.jsにあるという情報を取得したいと思います。
私は最初、IActiveScriptDebug
インターフェイスを使用してユーティリティ関数からスタックトレースを取得できると思っていました。ただし、インターフェイスまたは関連ドキュメントIActiveScript
からインターフェイスを取得することは不可能のようです( IE8の複数フレームJSの完全なコールスタックを参照)。IWebBrowser2
私が考えることができる唯一のことは、独自のスクリプトデバッガー実装を登録myfunc()
し、デバッガーに侵入することです。ただし、これがデバッガーに侵入するかどうかについてユーザーにプロンプトを表示せずに機能するかどうかについては懐疑的です。
このアプローチのより徹底的なテストを行う前に、これが機能する可能性があるかどうかについて誰かが決定的な情報を持っているかどうか、および/またはC++で記述された関数がスクリプトエンジンからスタックトレースを取得できるようにする代替アプローチを提案できるかどうかを確認したいと思いましたそれを呼び出しました。