1

yepnope.jsをページに挿入してから、yepnopeを使用して他のJSファイルをロードしようとしています。

Chrome Dev Toolsの[ネットワーク]タブには、yepnopeがフェッチされ、[elements]タブに[element]が挿入されていることが示されています。ただし、コンソールタブには次のように表示されます。

Uncaught ReferenceError: yepnope is not defined

これが私のコードです:

var betaApp = {


    injectYepnope: function(url) {
        var gp = document.createElement( 'script' );
        gp.type = 'text/javascript';
        gp.async = true;
        gp.src = url;

        gp.onload = betaApp.yepnopeLoaded;
        // Only for IE 6 and 7
        gp.onreadystatechange = function()
        {
            if( this.readyState == 'complete' )
            {
                betaApp.yepnopeLoaded();
            }
        }

        document.body.appendChild(gp);
    },

    yepnopeLoaded: function() {
        yepnope([
            {
                load: ['//cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js', 'http://raw.github.com/andris9/jStorage/master/jstorage.js'],
                complete: function() {
                    betaApp.firstPartLoaded();
                }
            },
            {
                load: [
                    'http://code.jquery.com/jquery-1.8.2.min.js',
                    'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js',
                    'https://raw.github.com/Automattic/Iris/master/dist/iris.js',
                    'https://raw.github.com/cnkt/eksi-beta/master/ui/js/twitter-bootstrap/js/bootstrap-modal.js',
                    'https://raw.github.com/Automattic/Iris/master/src/iris.min.css'
                ],
                complete: function() {
                    betaApp.allJsLoaded();
                }
            }
        ]);
    }
};

betaApp.injectYepnope('https://raw.github.com/cnkt/eksi-beta/master/ui/js/yepnope.js');

前もって感謝します。

4

1 に答える 1

0

コード自体は問題ありませんが、DOM の準備が整った後に呼び出されるようにする必要があります。そうしないと、ドキュメントにスクリプトを追加できません。

ライブラリの onReady イベント ( などJQuery.ready()) を使用します。これは、このコードを外部ファイルに含める必要がある場合の唯一のオプションです。または、ドキュメントの最後にある HTML にスクリプトを直接追加するだけです。

于 2012-10-06T09:51:55.430 に答える