jquery 是否有任何javascript事件用于动态加载外部JS?

uyto3xhc  于 2022-11-22  发布在  jQuery
关注(0)|答案(3)|浏览(139)

我 一直 在 做 一 个 bookmarklet 项目 , 它 加载 外部 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 后 , 我 收到 :
未 捕获 引用 错误 :chrome JS 控制 台 上 未 定义 jQuery 。
当 加载 一 个 DOM 示例 时 , 是否 有 任何 " 事件 " 被 调用 ? ( 或者 当 像 这样 加载 一 个 外部 JS 文件 时 , 是否 有 任何 事件 被 触发 ? )

k2arahey

k2arahey1#

<script>元素具有onload事件。

luaexgnf

luaexgnf2#

你可以这样做

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;
rvpgvaaj

rvpgvaaj3#

更新:使用下面最新的jquery代码。

jQuery的getScript以下面的方式处理它。

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 );

相关问题