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 が定義されていません

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 に答える