10

Firefox 有 Sandbox 和 evalInSandbox()。Chrome 在其内容脚本中具有沙盒执行(他们称之为隔离执行)。我在 IE 浏览器扩展中寻找同样的东西。

我可以加载一个 javascript 文件,然后调用 evalScript(),但代码在与页面上存在的 javascript 相同的环境中执行。我需要一种在沙盒/隔离环境中运行我的库(包括并基于 jQuery)的方法,但仍然允许它修改 DOM,就好像它在页面上运行一样。

Jint 看起来很有希望,但目前无法评估 jQuery。(他们可以解析它。)

我怎样才能做到这一点?

4

4 回答 4

6

看起来你对这个很感兴趣。

  • 一些微软人说 IE 不提供这个功能
  • 有些人说他们已经能够把它拉下来,把它紧紧握住,把它作为他们的秘密调味料加以保护
  • “专业” IE 扩展商店,当被联系到构建你正在谈论的内容时,拒绝这份工作

我真的希望我有更好的消息,但看起来可能需要一个小小的奇迹来完成你正在寻找的东西......或者可能需要很多钱。:)

你最好的选择可能是找到少数声称他们能够做到的人中的一个,并付给他们很多钱来分享秘密或重新考虑为什么你真的想要你想要的,看看你是否不能再完成它方法。

于 2010-12-09T23:27:15.873 回答
2

您可能会发现值得在 Live Labs 查看 Microsoft Web Sandbox: http ://websandbox.livelabs.com/

尽管它更成熟并且与混搭等相关,但它可能会为您指明正确的方向。

于 2010-01-08T18:27:38.960 回答
2

您正在寻找的是 ActiveScript 引擎(http://en.wikipedia.org/wiki/Active_Scripting

我现在找不到任何有用的链接,MSDN 只包含接口定义(http://msdn.microsoft.com/en-us/library/ccd0zt2w(v=vs.85).aspx)尝试谷歌“活动脚本” (不是“动作脚本”!)

您需要在您的扩展中实现接口 IActiveScriptHost,创建一个 «JScript» 对象,调用 SetSite 并传递您的主机对象,然后您可以将您的 js 代码加载到该引擎中并运行它。

由于缺乏有关它的文档,这种技术非常困难。如果您仍然对此感兴趣,我可以向您发送一些 C++/ATL 示例。

于 2011-02-16T14:42:42.233 回答
1

你能详细说明一下你的目标吗?

我认为您没有明确定义您要完成的工作。如果您的代码能够修改页面的 DOM,那么它实际上在页面的上下文中执行的。它可以创建新的脚本块来执行它可以完成的任何不安全或不可靠的操作,如果它在相同的执行环境中运行的话。

IE 没有提供功能来满足您的要求,而且我不相信 Firefox 和 Chrome 功能会按照您期望的方式工作。

于 2010-01-08T18:31:00.467 回答