如何沙箱化JS lib?

时间:2013-01-24 16:44:44

标签: javascript

我正在使用javascript lib,因为我在这个大网站上的其他libs似乎失败了。我有办法以某种方式沙箱吗?也许把它放在iframe然后在我的javascript类中指定一个var

var myvar = iframe.theJSlib;

我只是在写一个主意。我不知道如何沙箱,也不知道是否可以。如何沙箱javascript lib并在我的主页面中访问它?

4 个答案:

答案 0 :(得分:1)

这就是为什么我们将vars保持在全球范围之外的原因。尝试将lib中的所有内容包含在自己的函数中,如下所示:

(function(){
  // the library code
}());

请记住,这只会修复显式声明的变量,例如var foo = 'bar';,但不会修复隐式声明的变量,例如foo = 'bar',它们仍会被分配给全局对象,很可能是window

您还可以尝试更改所有代码以使用单个命名空间,如下所示:

var myApp = {};

myApp.foo = { /* maybe my validator code */ };
myApp.bar = { /* maybe my utilities code */ };

答案 1 :(得分:0)

将它放在iframe中肯定会阻止它正常工作。你所能做的就是将有问题的代码包装在一个函数中,这样一切都在该函数的范围内运行。

请参阅:Javascript Namespacing

并且:JavaScript Namespace

答案 2 :(得分:0)

您不能一次沙箱一个lib。 您必须通过在兼容模式下在它们自己的命名空间中运行它们来沙箱化它们:

(function(myLib){
    // do stuff with this lib here
})(theLongLibname)

答案 3 :(得分:0)

把它放在一个匿名函数中:

(function(){
    // >Your code goes here<
})();