动态脚本按任意名称加载

时间:2014-06-12 17:43:57

标签: javascript load

我想通过浏览器中的哈希字符串动态加载脚本:

var query = this.param.query; 
// This is a hash string. Example: http://domain.com/#!man
files.run("jsfolder/"+query+".js", function() {query.init()}); 
// or files.run("jsfolder/man.js", function() {man.init()});

但上面的代码返回:

Uncaught TypeError: undefined is not a function 1.js:98
(anonymous function)
(anonymous function)
script.onload

如何解决这个问题? 感谢。

P.S

我的man.js文件:

var man = {
    init : function(){      
       //do stuff   
    }
}

回调函数(在脚本加载后执行):

function() {query.init()}

1 个答案:

答案 0 :(得分:0)

我不确定你在做什么环境,但这应该可以解决问题:

var header = document.getElementsByTagName("head")[0],
    script = document.createElement("script"),
    query = this.param.query;

script.type = "text/javascript";
script.src = "jsfolder/" + query + ".js";

header.appendChild(script);

基本上,您创建一个脚本元素并将其附加到头部。这将加载并执行指定文件中的任何JavaScript。

据我所知,没有files.run功能。