类似chrome的Content Scripts那样。我需要把一段用户脚本放到一个完全独立的上下文中,也就是隔离掉外面的所有变量比如window
,document
,top
,location
...,只允许使用给定的一些东西。
大概的样子是这样的,但是这个做法明显很扯蛋,忘记过滤哪个变量就完蛋了……应该说100%会漏掉……
function runScript(script){
try{
(function (script, window, document, top, location, console, ......){
eval(script);
}).call({somethings}, script)
} catch {
}
}
PHP中文网2017-04-10 13:13:37
找到一个小玩意 https://github.com/tarruda/vm.js 看起比较靠谱地说,不过自己编译执行什么的……感觉效率会有点问题啊,有没有直接利用js特性的更好的做法?