1

コンピューターにある JavaScript を実行するために、IE8 用のブラウザー ヘルパー オブジェクトを作成しました。同様に、ブラウザー拡張機能は他のブラウザーでも機能します。次のコードを実行しようとしています。

    IHTMLWindow2* pWindow;
    doc->get_parentWindow(&pWindow);

    hr = pWindow->execScript((BSTR)"var d=window.document,\
s=d.createElement('script'),\
h=d.getElementsByTagName('body')[0];\
s.src='file:///L:/prg/Web/ieplugin/ieplugin.js';\
h.appendChild(s);",
(BSTR)"JavaScript", &vResult);

しかし、結果は E_INVALIDARG になります。これは、スクリプト アドレスが原因である可能性が最も高いです。インターネット ゾーンのセキュリティ設定を下げずに、コンピューターからスクリプトを実行することはできますか? 信頼済みサイトのセキュリティ設定を最小にして、信頼済みサイト「file://localserver」に追加しようとしましたが、役に立ちませんでした。

編集:より具体的には、IEウィンドウ内に次のエラーメッセージが表示されます:

Message: Invalid character

Line: 1

Char: 1

Code: 0

URI: file:///L:/prg/Web/ieplugin/ieplugin.js
4

1 に答える 1

0

Internet Explorer では、File:// 以外で配信されるページ内で file:// プロトコル URI を使用することはできません。この変更は 2011 年に行われたもので、INTERNET および RESTRICTED ZONE サイトにのみ適用されます。

詳細については、 http://blogs.msdn.com/b/ieinternals/archive/2011/08/12/internet-explorer-9.0.2-update-changes-file-protocol-and-cookie-naming.aspxを参照してください。

これを回避するには、代わりに拡張機能でターゲット スクリプトの内容を BSTR に読み込み、その BSTR を使用して execScript に渡します。

于 2013-08-12T19:56:29.333 に答える