Выполнение 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 работают так, как вы ожидаете.