0

ページがロードされた後にJavaScriptコードを(HTMLドキュメントの一番下の行に配置せずに)ロードする方法はありますか?スクリプトの例は次のとおりです。

<script type="text/javascript" src="http://www.flickr.com/badge_code_v2.gne?count=10&display=latest&size=t&layout=x&source=user&user=XXX"></script>

PS。その理由は、上記のFlickrコードの読み込みが遅く、その間にサイトがハングするためです。

4

5 に答える 5

1
var asyncLoad = function (url) {
    if (typeof url !== 'string') {
        return false;
    }
    var script = document.createElement('script'),
        firstScript = document.getElementsByTagName('script')[0];
    script.setAttribute('src', url);
    firstScript.parentNode.insertBefore(script, firstScript);
    return script;
};

//または、スクリプトのないページの場合は、頭に追加するだけです。

var asyncLoad = function (url) {
    if (typeof url !== 'string') {
        return false;
    }
    var script = document.createElement('script'),
        head = document.getElementsByTagName('head')[0];
    script.setAttribute('src', url);
    head.appendChild(script);
    return script;
};

// 申し込み:

document.addEventListener('DOMContentLoaded', function () {
    asyncLoad('script_url');
});
于 2012-09-03T06:33:48.437 に答える
1

あなたはそれを試すことができます

<script type="text/javascript">
// Use any event to append the code
$(document).ready(function() 
{
    var s = document.createElement("script");
    s.type = "text/javascript";
    s.src = "test.js";
    // Use any selector
    $("head").append(s);
});
</script>

もちろん、これにはjqueryライブラリが必要です。そうでない場合は、このコードをbodyのonloadメソッドに貼り付けることができます。

さて、これは便利なものです

URLでスクリプトを同期的に実行することはできません。さらに、ネットワーク(またはファイルシステムさえも!)が関係している場合、同期することは悪い考えであることに注意してください。誰かが、いつか、どこかで遅いシステム、遅いネットワーク、またはその両方になり、突然、その過程でUIをハングアップさせました。

http://bugs.jquery.com/ticket/6557

または、試すことができます

http://yepnopejs.com/

于 2012-09-03T05:46:06.807 に答える
1

ボディのonloadメソッドに適用します。

于 2012-09-03T05:46:14.183 に答える
1

ページ全体(すべての要素を含む)の読み込みが完了した後にスクリプトを読み込む場合は、これを試してください。(jQuery)

$(window).load(function() {
        var js, 
            id = 'SCRIPT-ID', 
            ref = document.getElementsByTagName('script')[0];

        if (document.getElementById(id)) {
            return;
        }

        js = document.createElement('script'); 
        js.id = id; 
        js.async = true;
        js.src = "http://www.website.com/script.js";
        ref.parentNode.insertBefore(js, ref);
    });

DOMがレンダリングされた後にロードする場合は、次のように変更$(window)します。$(document)

于 2012-09-03T05:51:35.560 に答える
0

スクリプトのモジュール式実行が必要な場合は、次のライブラリを使用できます

http://headjs.com/

于 2012-09-03T05:46:57.407 に答える