【发布时间】:2010-01-08 18:22:53
【问题描述】:
Firefox 有 Sandbox 和 evalInSandbox()。 Chrome 在其内容脚本中具有沙盒执行(他们称之为隔离执行)。我正在 IE 浏览器扩展中寻找同样的东西。
我可以加载一个 javascript 文件,然后调用 evalScript(),但代码在与页面上存在的 javascript 相同的环境中执行。我需要一种在沙盒/隔离环境中运行我的库(包括并基于 jQuery)的方法,但仍然允许它修改 DOM,就好像它在页面上运行一样。
Jint 看起来很有前途,但目前无法评估 jQuery。 (他们可以解析它。)
我该怎么做?
【问题讨论】:
-
Chrome 的孤立世界:code.google.com/chrome/extensions/… "内容脚本在称为孤立世界的特殊环境中执行。它们可以访问被注入页面的 DOM,但不能访问任何 JavaScript 变量或函数由页面创建。”
-
Firefox 的 evalInSandbox:developer.mozilla.org/En/Components.utils.evalInSandbox GreaseMonkey 使用此方法允许在页面上下文之外执行 javascript。将 DOM 作为变量传递允许脚本修改 DOM,而不允许页面的 javascript 访问它自己的方法和变量。这确实允许沙盒代码植入脚本标签并在主页中加载内容,但阻止这不是我关心的问题。
-
我不相信 evalInSandbox 真的像你想象的那样工作;请参阅安全部分中的代码示例。虽然我不是专家,但我的理解是 evalInSandbox 主要用于允许 JS 在完全信任的 Chrome 区域中执行,而不是在活动文档的有限信任区域中执行。
-
我想每个人都只是害怕告诉你他们不知道你的问题的答案。它们不是答案。我也没有,但我只是说'
标签: javascript jquery internet-explorer sandbox bho