Выполнение изолированного Javascript в расширении Internet Explorer (BHO) - PullRequest
10 голосов
/ 08 января 2010

Firefox имеет Песочницу и evalInSandbox (). Chrome имеет изолированное выполнение в своих скриптах содержимого (они называют это изолированное выполнение). Я ищу то же самое в расширении браузера IE.

Я могу загрузить файл javascript, затем вызвать evalScript (), но код выполняется в той же среде, что и javascript, который существует на странице. Мне нужен способ запуска моей библиотеки (которая включает и основана на jQuery) в изолированной / изолированной среде, но все же позволяет ей изменять DOM, как если бы она работала на странице.

Jint выглядит многообещающе, но в настоящее время не может оценить jQuery. (Они могут разобрать это.)

Как я могу это сделать?

Ответы [ 4 ]

6 голосов
/ 10 декабря 2010

Похоже, вы в рассоле с этим.

  • Некоторые сотрудники Microsoft говорят, что IE не предлагает эту функцию
  • Кто-то, кто сказал, что ему удалось снять это, держат его поближе и защищают как свой секретный соус
  • «Профессиональные» магазины расширений IE, когда связываются о создании того, о чем вы говорите, отказываются от работы

Мне бы очень хотелось, чтобы у меня были хорошие новости, но похоже, что для достижения того, что вы ищете, может потребоваться небольшое чудо ... или, может быть, много денег. :)

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

2 голосов
/ 16 февраля 2011

То, что вы ищете, это движок 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-код в этот движок и запустить его.

Эта техника довольно сложна из-за отсутствия документации о ней. Если вы все еще заинтересованы в этом, я могу отправить вам несколько примеров на C ++ / ATL.

2 голосов
/ 08 января 2010

Возможно, вам стоит взглянуть на Microsoft Web Sandbox в Live Labs: http://websandbox.livelabs.com/

Несмотря на то, что он более полноценный и связан с коллажами и тому подобным, он может указывать вам правильное направление.

1 голос
/ 08 января 2010

Можете немного рассказать о своих целях?

Не думаю, что вы четко определили, чего пытаетесь достичь. Если в вашем коде есть возможность изменять DOM страницы, тогда он фактически выполняется в контексте страницы. Он может создавать новые блоки сценариев для выполнения любых небезопасных или ненадежных действий, которые он мог бы выполнить, работая в той же среде выполнения.

IE не предлагает функции для выполнения ваших задач, и я не уверен, что функции Firefox и Chrome работают так, как вы ожидаете.

...