无法在IE中执行本地脚本

时间:2013-08-11 06:43:28

标签: javascript c++ internet-explorer browser-addons

我为IE8创建了一个浏览器帮助程序对象,以便运行位于我计算机上的javascript。像浏览器扩展一样适用于其他浏览器我正在尝试执行以下代码:

    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,这很可能是由脚本地址引起的。是否可以在不降低Internet区域安全设置的情况下从我的计算机运行脚本?我尝试将可信站点的安全设置设置为最小,并添加到受信任站点的file:// localserver',但无济于事。

编辑:更具体地说,我在IE窗口中收到以下错误消息:

Message: Invalid character

Line: 1

Char: 1

Code: 0

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

1 个答案:

答案 0 :(得分: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中,然后使用该BS​​TR传递给execScript。