在沙盒中执行eval时缺少窗口中定义的类
Missing classes defined in window when eval in Sandbox
我有一个问题,试图评估一些源代码在沙箱。我向窗口(DOM)对象添加了一些类,我真的需要将这些类包含在Sandbox中。如:
window.BaseClass = function(){this.someProperty = "bla bla";}
...
var ctx = new Components.utils.Sandbox(window);
ctx.BaseClass = BaseClass; //This is neccesary
var src = "function SubClass(){}; SubClass.prototype = new BaseClass();";
var evaluation = Components.utils.evalInSandbox(src, ctx);
var res = new evaluation[className];
alert(res);
问题是这些新类并不总是相同的,所以我不能总是只使用ctx.BaseClass = BaseClass;
。那么有没有一种方法包括在沙盒所有类窗口已定义?
我试图从evalInSandbox结果中获得新类。这就是问题所在:我必须从上下文中执行:
Components.utils.evalInSandbox(src, ctx);
var res = new ctx[className];
相关文章:
- 如何在选项卡上定义属性'的主窗口对象
- 如何解决'窗口未定义'终端上的节点JS出错
- Internet窗口未定义
- 自定义警报/弹出窗口和保持JS引擎
- 单击或取消选中复选框时,如何创建弹出的自定义窗口
- 为自定义网站创建JavaScript搜索框,创建显示搜索结果的弹出窗口
- requirejs优化器错误:未定义窗口
- 用自定义javascript全局命名空间替换窗口
- 清除 Javascript 中窗口对象中的自定义变量
- 自定义社交共享未在窗口中打开
- 如何自定义数据::confirm弹出窗口以提示输入,该输入将附加到请求参数中
- 如何使用jquery创建自定义弹出窗口
- 如何使用Chrome'查看窗口对象中定义了哪些变量;的开发工具
- 使用自定义内容而不是url创建弹出窗口
- window.location.href窗口未在javascript中定义
- 自定义信息窗口
- 这些事件处理程序中的哪一个应该在窗口关闭时触发自定义函数
- 如何使用子窗口上下文执行在父窗口中定义的函数
- $window错误'$窗口未定义'Angular应用程序中的谷歌分析代码
- Chrome扩展-在全屏视频顶部显示自定义通知/弹出窗口(HTML元素)