【发布时间】:2010-10-07 07:27:06
【问题描述】:
我有一个 javascript 文件,它读取另一个文件,该文件可能包含需要进行 eval() 编辑的 javascript 片段。脚本片段应该符合严格的 javascript 子集,它限制了它们可以做什么以及它们可以更改哪些变量,但我想知道是否有某种方法可以通过阻止 eval 看到全局范围内的变量来强制执行此操作.类似于以下内容:
function safeEval( fragment )
{
var localVariable = g_Variable;
{
// do magic scoping here so that the eval fragment can see localVariable
// but not g_Variable or anything else outside function scope
eval( fragment );
}
}
实际的代码不需要看起来像这样——我对任何和所有关于闭包的奇怪技巧都持开放态度,等等。但我确实想知道这是否可能。
【问题讨论】:
-
我不知道它是否适用于
eval,但你可以尝试切换它的执行上下文(google激活对象)。 -
看看 dojox.secure.sandbox 的实现。
-
现在,您可能想要的是一个 Web Worker。
标签: javascript eval