0

我用这个函数导入 JS 文件:

function importScript(url){
var tag = document.createElement("script");
tag.type= "text/javascript";
tag.src = url;
document.body.appendChild(tag);
}

所以:

importScript("http://cdnjs.cloudflare.com/ajax/libs/cufon/1.09i/cufon-yui.js");
importScript("https://raw.github.com/gist/3160278/0895dcf14f623abba82c4aa7d25e00e50404248a/Meta.js");

没关系。我在源代码中看到带有此代码段的脚本文件。一切正常。但是当我打电话给 Cufon 时:

Cufon.replace('h1');

Chrome 控制台说:Uncaught ReferenceError: Cufon is not defined

4

1 回答 1

2

您使用的方法异步加载脚本,因此以下代码:

Cufon.replace('h1');

在加载 Cufon 库之前运行。


相反,传入一个回调,并使用onload

function importScript(url, callback) {
    var tag = document.createElement("script");

    tag.type = "text/javascript";
    tag.src = url;

    callback && (tag.onload = callback);

    document.body.appendChild(tag);
}

importScript("http://cdnjs.cloudflare.com/ajax/libs/cufon/1.09i/cufon-yui.js", function() {
    importScript("https://raw.github.com/gist/3160278/0895dcf14f623abba82c4aa7d25e00e50404248a/Meta.js", function() {
        Cufon.replace('h1');
    });
});

这很快就会失控。我建议您考虑使用Script Loader

这是小提琴:http: //jsfiddle.net/72Ghd/

于 2012-07-22T17:48:45.287 回答