1

私は、次のように外部の jQuery.js ファイルをロードするブックマークレット プロジェクトに取り組んできました。

jq_script = document.createElement('SCRIPT');
jq_script.type = 'text/javascript';
jq_script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js';
document.getElementsByTagName('head')[0].appendChild(jq_script);

しかし、この直後に jQuery を使用しようとすると、次のメッセージが表示されます。

Uncaught ReferenceError: jQuery is not defined

Chrome JS コンソールで。

単一の dom インスタンスがロードされたときに呼び出される「イベント」はありますか? (または、このように外部 JS ファイルがロードされたときにトリガーされるイベントはありますか?)

ありがとうございました!

4

3 に答える 3

3

<script>要素にはonloadイベントがあります。

于 2012-07-12T05:41:40.517 に答える
0

あなたはこのようにすることができます

function loadScript()
{
 jq_script = document.createElement('SCRIPT');
 jq_script.type = 'text/javascript';
 jq_script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js';
 document.getElementsByTagName('head')[0].appendChild(jq_script);
}

window.onload = loadScript;
于 2012-07-12T05:43:55.983 に答える
0

更新: 以下の最新の jquery コードを使用します。

jQuery のgetScriptは以下のように処理します。の中に機能を配置できますif(!isAbort)

script = document.createElement( "script" );

script.async = "async";

if ( s.scriptCharset ) {
    script.charset = s.scriptCharset;
}

script.src = s.url;

// Attach handlers for all browsers
script.onload = script.onreadystatechange = function( _, isAbort ) {

    if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {

        // Handle memory leak in IE
        script.onload = script.onreadystatechange = null;

        // Remove the script
        if ( head && script.parentNode ) {
            head.removeChild( script );
        }

        // Dereference the script
        script = undefined;

        // Callback if not abort
        if ( !isAbort ) {
            //**Do your stuff here**
        }
    }
};
// Use insertBefore instead of appendChild  to circumvent an IE6 bug.
// This arises when a base node is used (#2709 and #4378).
head.insertBefore( script, head.firstChild );
于 2012-07-12T05:46:20.593 に答える