Расширение IE — внедрение файла Javascript

Я разрабатываю расширение IE, которое работает на сайтах, открытых в Internet Explorer. Он предназначен для работы так же, как расширение Chrome. Я пытаюсь реализовать функцию фона расширения Chrome, используя c ++ и скрипт содержимого, внедряя JS в текущую веб-страницу. Сценарий содержимого, который я пытаюсь загрузить через execScript IHTMLWindow2 при событии загрузки документа. Теперь, когда мне нужно ввести файлы JS напрямую, я попробовал следующее.

Был файл JS в папке внутри места назначения проекта и попытался внедрить, используя физический путь.

std::wstring filePath(_T("d:/xx/xxx/x/x/Content/myFile.js"));
scriptText = scriptText+ filePath + endScript;
VARIANT vrt = {0};
HRESULT hrexec = ifWnd->execScript(SysAllocString(scriptText.c_str()),L"javascript", &vrt);

В scriptText есть некоторый код javascript для создания элемента script с атрибутами type и src. FilePath содержит физический путь к файлу js. [Также пробовал относительный путь, но это не было сделано]

Вышеупомянутое не работало правильно в IE9 из-за проблемы со смешанным содержимым, на которой я исследовал, чтобы выяснить, что IE9 ожидает, что файл js будет получен с сервера, а не локального физического пути. Консоль выдает мне следующее исключение.

SEC7111: HTTPS security is compromised by file:<filepath>
SCRIPT16388: Operation aborted

Я в значительной степени не уверен, есть ли какой-нибудь способ внедрить Javascript в текущий DOM с физического пути. Пожалуйста помоги мне с этим.

Также дайте мне знать, есть ли какая-либо другая возможность внедрения файла JS из текущего рабочего каталога в DOM.

1

Решение

Вам не нужно вводить <SCRIPT> тег в DOM.

Если ваш файл JS содержит:

var strHello = "Hello";
function SayHello() { alert( strHello ); }

Вы можете просто прочитать файл в память, построить BSTR строка с ним, и передать эту строку IHTMLWindow2::execScript,

Позже, еще один вызов execScript со строкой SayHello(); появится всплывающее окно с предупреждением. Введенный вами код все еще здесь.

0

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

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

По вопросам рекламы [email protected]