ホームページ >ウェブフロントエンド >jsチュートリアル >jQuery を使用してスクリプト要素を追加するときに「onload」イベントが発生しないのはなぜですか?

jQuery を使用してスクリプト要素を追加するときに「onload」イベントが発生しないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-04 02:45:02344ブラウズ

Why Doesn't the `onload` Event Fire When Appending a Script Element Using jQuery?

スクリプト タグに関する OnLoad イベントの問題

シーケンス内でスクリプトをロードしようとすると、onload イベントがトリガーされないという問題が発生します。次のコード スニペットは問題を示しています:

function loadScripts(scripts){
    var script = scripts.shift();
    var el = document.createElement('script');
    el.src = script;
    el.onload = function(script){
        console.log(script + ' loaded!');
        if (scripts.length) {
            loadScripts(scripts);
        }
        else {
            console.log('run app');
            MK.init();
        }
    };
    $body.append(el);
}

jQuery ($body.append(el)) を使用してスクリプト要素が DOM に追加されるときに、onload イベントが発生しません。ただし、ネイティブ JavaScript document.body.appendChild(el) を使用すると、意図したとおりにイベントがトリガーされます。

解決策:

この問題を解決するには、コードを次のように変更します。

function loadScripts(scripts){
    var script = scripts.shift();
    var el = document.createElement('script');
    $body.append(el);
    el.onload = function(script){
        console.log(script + ' loaded!');
        if (scripts.length) {
            loadScripts(scripts);
        }
        else {
            console.log('run app');
            MK.init();
        }
    };
    el.src = script;
}

src 属性を設定する前にスクリプトを DOM にアタッチすると、onload イベントが期待どおりに発生します。さらに、ブラウザ間の互換性のために、jQuery の getScript() メソッドの使用を検討してください。

以上がjQuery を使用してスクリプト要素を追加するときに「onload」イベントが発生しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。