首页 > 如何让js在完全独立的上下文中运行

如何让js在完全独立的上下文中运行

类似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 {

  }
}

试试模块加载器。


过滤掉浏览器的api?试试在node里运行呢?


找到一个小玩意 https://github.com/tarruda/vm.js 看起比较靠谱地说,不过自己编译执行什么的……感觉效率会有点问题啊,有没有直接利用js特性的更好的做法?

【热门文章】
【热门文章】