首页 > web前端 > js教程 > 正文

为什么使用 jQuery 附加脚本元素时不会触发 `onload` 事件?

Barbara Streisand
发布: 2024-11-04 02:45:02
原创
313 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板