ホームページ  >  に質問  >  本文

javascript - 如何让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 {

  }
}
天蓬老师天蓬老师2749日前341

全員に返信(3)返信します

  • PHP中文网

    PHP中文网2017-04-10 13:13:37

    试试模块加载器。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-10 13:13:37

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

    返事
    0
  • ringa_lee

    ringa_lee2017-04-10 13:13:37

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

    返事
    0
  • キャンセル返事