当前位置: 首页 > 面试题库 >

尝试在脚本标签上触发onload事件

林建本
2023-03-14
问题内容

我正在尝试按顺序加载一组脚本,但是onload事件对我没有触发。

    var scripts = [
        '//cdnjs.cloudflare.com/ajax/libs/less.js/1.3.3/less.min.js',
        '//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0-rc.3/handlebars.min.js',
        MK.host+'/templates/templates.js'
    ];

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

    loadScripts(scripts);

我猜想当使用jQuery将元素添加到DOM时,不会触发诸如el.onload之类的本地事件。如果我使用本机,document.body.appendChild(el)则可以正常启动。


问题答案:

您应该在事件f.ex 之后* 设置src属性: *onload

el.onload = function() { //...
el.src = script;

您还应该 附加onload事件 之前 将脚本附加到DOM :

$body.append(el);
el.onload = function() { //...
el.src = script;

请记住,您需要检查readystateIE支持。如果您使用的是jQuery,则还可以尝试以下getScript()方法:http
:
//api.jquery.com/jQuery.getScript/



 类似资料:
  • 问题内容: 使用angular.js给出以下代码 此处的Plunkr:http://plnkr.co/edit/i4MAzs HTML: Javascript: 当您点击“ Value2”标签时,click事件将触发两次。仅当ng-click附加到标签时才会发生这种情况。将其附加到输入元素后,所有内容都会按预期工作。 有人可以解释发生了什么吗? 问题答案: 另外,我还编辑了您的plnkr以显示事件

  • 问题内容: 我使用以下代码段使用ajax远程添加新的select2标签,并且我想在新标签/删除标签事件中注册或删除多对多表中的某些记录 桌子看起来像 我的Javascript 在返回的json中,我也有一个产品ID,并且我正在寻找一种在select2事件上触发新ajax的方法,但是我不知道应该在哪里保存或删除表中的数据。 做一些研究后,我已经能够构建一个功能,该功能可以更新上表中的记录,并且可以正

  • 问题内容: 我正在处理用户脚本,但我发现当主页发出AJAX请求时,该脚本未运行。 有什么方法可以在主页加载和AJAX请求上触发用户脚本? 问题答案: 在AJAX请求上重新运行脚本代码的明智方法是,专注于页面的关键部分并检查更改。 例如,假设页面包含如下所示的HTML: 并且您希望脚本对每个注释进行处理。 现在,您 可以 拦截所有AJAX调用, 或者侦听 (不建议使用)或使用s,但是这些方法可能会变

  • 我需要自动化web分析,为此,我需要从java代码触发“谷歌标签管理器”GTM脚本。例如。 用户转到https://www.etsy.com/ 用户查找DataLayer的GTM脚本 null

  • 问题内容: 我熟悉的典型用法,如下所示: 触发载入事件的所有html元素是什么?(因此执行onload属性中提供的javascript) 例如,一个这样的标记将在加载后执行属性中提供的javascript : 问题答案: 以下HTML标记支持“ onload”: 以及以下Javascript对象:

  • 问题内容: 我想在Angularjs控制器中触发JS代码。 我有这个: 当我离开使用该控制器的页面时,此方法工作正常,但当我关闭标签/浏览器时,该方法不起作用。 标签/浏览器关闭时是否需要使用其他代码来触发JS代码? 问题答案: 从角度文档: $ destroy(); 从父范围中删除当前范围(及其所有子级)。删除意味着对$ digest()的调用将不再传播到当前作用域及其子级。删除还意味着当前范围