Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在受限范围内使用eval_Javascript_Jquery_Eval - Fatal编程技术网

Javascript 在受限范围内使用eval

Javascript 在受限范围内使用eval,javascript,jquery,eval,Javascript,Jquery,Eval,好的,让我解释一下我需要什么: 我希望用户能够evalJS/jQuery语句 必须限制对元素的访问-意思是:假设objectX不可用,但是objectY应该可用 我该怎么做呢?编写自己的Javascript引擎和DOM层?难道你不能取消定义你不想公开的对象/函数吗(将这样的脚本预先添加到代码中,然后在执行后进行评估和恢复)?这不是很安全,但是如果你足够信任你的用户来执行他们输入的代码,你可以试着使用这样的东西:(function(){var window={};(function(){/*u

好的,让我解释一下我需要什么:

  • 我希望用户能够
    eval
    JS/jQuery语句
  • 必须限制对元素的访问-意思是:假设object
    X
    不可用,但是object
    Y
    应该可用

我该怎么做呢?

编写自己的Javascript引擎和DOM层?难道你不能取消定义你不想公开的对象/函数吗(将这样的脚本预先添加到代码中,然后在执行后进行评估和恢复)?这不是很安全,但是如果你足够信任你的用户来执行他们输入的代码,你可以试着使用这样的东西:
(function(){var window={};(function(){/*user code here*/})(;})()
。您还必须将
绑定到全局对象以外的其他对象,否则经过计算的代码可以使用它来获取引用。而关闭全局对象将不允许对元素
Y
进行过滤访问,但不允许对元素
X
@IsmaelMiguel进行过滤访问。同样的情况也适用于:
(function(){var window={};with(window){test=“test”;}});控制台日志(测试)。顺便说一句,添加额外的作用域并没有什么不同