使用jQuery动态导入javascript?

我正在尝试使用jQuery设置一个widget框架,所以我需要通过解析widget的xhtml并包含在框架页面中来导入java脚本。 问题是这可能会导致命名空间的污染。 是否可以在运行时将java脚本加载到命名空间中?

也许我有一些更好的方法可以忽略?

谢谢,皮特

AS Josh Stodola提到在运行时创建变量不是问题

var holdsWidgetUUID = "widgetUUIDValue"; eval(holdsWidgetUUID + "= (" + data + ")"); alert(eval(holdsWidgetUUID)); 

或者如果你愿意的话

 var UUID = "widgetUUID"; var holdsWidgetUUID = "widgetUUIDValue"; window["widgets"] = new Array(); window["widgets"][holdsWidgetUUID] = data; alert(window["widgets"][holdsWidgetUUID]); 

问题是让加载的javascript工作是可调用的,如dynamicvariablename.methodname()

如果你对包含的javascript强制执行某种编码练习,我有一个有效的解决方案。 也许这会让你朝着正确的方向前进。

这是一个小部件javascript(works.js)。 注意到它是一个带有内部定义的字段和方法的javascript“类”。 这本身就使命名空间污染降低,并允许我们实现所需的调用formsx.getInfo()

 function () { this.type = 1; this.color = "red"; this.getInfo = function() { return this.color + ' ' + this.type + ' widget'; }; } 

这是在运行时在命名空间中包含它的文件

   Widget Magic?     

Just some stuff

你可以这样做……

 var myOtherFramework = null; $.get("myScript.js", function(data) { myOtherFramework = eval("(" + data + ")"); }); 

然后像…那样引用它

 myOtherFramework.funcName(); 

你加载的javascript本身应该已经使用了唯一的命名空间。