0

この質問は、私の別の質問の結果です。

コードは次のとおりです。

<script type='text/javascript'>
    var scripts = [ 
        "http://www.---.com/include/jquery-1.8.3.min.js",
        "http://www.---.com/include/functions.js",
        "http://www.---.com/include/myjs.js",
        "http://www.---.com/include/plugins/bxslider/bxslider.js" 
    ];
    function downloadJSAtOnload() { 
        for( var i=0; i<scripts.length; i++ ) {
            var element = document.createElement('script');
            element.src = scripts[i];
            document.body.appendChild(element);
        }
        $(document).ready(function(){
            $('#mainslide .bxslider').bxSlider({
                slideWidth: '960',
                mode: 'vertical',
                speed: '500',
                captions: false,
                pager: false,
                controls: false,
                nextText: 'Next',
                prevText: 'Prev',
                auto: true,
                autoHover: true,
                pause: 3000
            });
        });
    }
    if (window.addEventListener) window.addEventListener('load', downloadJSAtOnload, false);
    else if (window.attachEvent) window.attachEvent('onload', downloadJSAtOnload);
    else window.onload = downloadJSAtOnload;
</script>

生成されるエラーは"Uncaught ReferenceError: $ is not defined"です。

奇妙なことに、多くのブラウザーやバージョンですべて (スライドショー、ライトボックスなど) が完全に機能します。IE8 と Safari 4 だけで、アラートがユーザーに表示されます。

4

5 に答える 5

0

scriptこれらのブラウザーは、要素が で作成された後body、最初の に到達する前にjQuery ファイルを実際にロードするには遅すぎる可能性があります$

ドキュメントのscriptタグでそれらを宣言してみませんか?head

于 2013-04-11T12:52:44.703 に答える
0

スクリプトをドキュメント本文に追加しますが (実際には head にあるはずです)、jQuery にアクセスする前にスクリプトがダウンロードされて実行されるのを待たない$(document).ready(...)ので、少なくともある程度の時間は失敗すると予想されます。onreadyjQuery を使用せずにドキュメント イベントにアタッチする必要があります。

于 2013-04-11T12:53:00.800 に答える
0

関数を document.ready() から取り出し、jQuery.js ファイルの最後に追加します。そうすれば、jQuery がロードされた後にのみ実行されます。

于 2013-08-13T18:45:23.220 に答える