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