JavaScript не может выполнить локальный скрипт в IE

Я создал объект Browser Helper для 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, который, скорее всего, вызван адресом скрипта. Можно ли запустить скрипт с моего компьютера, не понижая настройки безопасности для интернет-зоны? Я попытался установить минимальные настройки безопасности для надежных сайтов и добавил в доверенные сайты файл: // localserver, но безрезультатно.

РЕДАКТИРОВАТЬ: Более конкретно, я получаю следующее сообщение об ошибке в окне IE:

Message: Invalid character

Line: 1

Char: 1

Code: 0

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

1

Решение

Internet Explorer не позволяет использовать URI-адреса протокола file: // на страницах, отличных от File: //. Это изменение было сделано еще в 2011 году и применяется только к сайтам ИНТЕРНЕТ и ОГРАНИЧЕННОЙ ЗОНЫ.

Увидеть 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.

0

Другие решения

Других решений пока нет …