Изолированное выполнение Javascript в расширении Internet Explorer (BHO)
-
19-09-2019 - |
Вопрос
В Firefox есть песочница и evalInSandbox().Chrome использует изолированное выполнение в своих скриптах содержимого (они называют это изолированным выполнением).Я ищу то же самое в расширении браузера IE.
Я могу загрузить файл javascript, затем вызвать evalScript(), но код выполняется в той же среде, что и javascript, который существует на странице.Мне нужен способ запустить мою библиотеку (которая включает в себя jQuery и основана на нем) в изолированной среде, но при этом разрешить ей изменять DOM так, как если бы она была запущена на странице.
Jint выглядит многообещающе, но в настоящее время не может оценить jQuery.(Они могут разобрать это.)
Как я могу это сделать?
Решение
Похоже, с этим ты в затруднительном положении.
- Некоторые сотрудники Microsoft говорят, что IE не предлагает такой функциональности
- Некоторые, кто говорит, что им удалось это провернуть, держат это при себе и защищают как свой секретный соус
- "Профессиональные" магазины расширений, то есть, когда к ним обращаются по поводу создания того, о чем вы говорите, отказываются от работы
Я действительно хотел бы, чтобы у меня были новости получше, но, похоже, потребуется маленькое чудо, чтобы достичь того, что вы ищете...или, может быть, много денег.:)
Вероятно, вам лучше всего будет найти одного из немногих, кто утверждает, что смог это сделать, и хорошо заплатить им, чтобы они поделились секретом или пересмотрели, почему вы действительно хотите того, чего хотите, и посмотрели, нельзя ли добиться этого другим способом.
Другие советы
Возможно, вам покажется целесообразным ознакомиться с веб-песочницей Microsoft в Live Labs:http://websandbox.livelabs.com/
Хотя он более полноценен и связан с мэшапами и тому подобным, он может указать вам правильное направление.
То, что вы ищете, - это движок ActiveScript (http://en.wikipedia.org/wiki/Active_Scripting)
Сейчас я не могу найти никаких полезных ссылок, MSDN содержит только определение интерфейсов (http://msdn.microsoft.com/en-us/library/ccd0zt2w (v= против 85).aspx) Попробуйте поискать в Google "Активные сценарии" (не "Сценарии действий"!)
Вам нужно реализовать интерфейс IActiveScriptHost в вашем расширении, создать объект «JScript», вызвать SetSite и передать свой объект host, затем вы можете загрузить свой js-код в этот движок и запустить его.
Этот метод довольно сложен из-за отсутствия документации о нем.Если вы все еще заинтересованы в этом, я могу прислать вам несколько примеров на C ++ / ATL.
Не могли бы вы немного подробнее рассказать о своих целях?
Я не думаю, что вы четко определили, чего пытаетесь достичь.Если ваш код имеет возможность изменять DOM страницы, то он эффективно является выполняется в контексте страницы.Он может создавать новые блоки скрипта для выполнения любого небезопасного или ненадежного действия, которое он мог бы выполнить, если бы работал в той же среде выполнения.
IE не предлагает функции для выполнения того, о чем вы просите, и я не уверен, что функции Firefox и Chrome работают так, как вы ожидаете.