是否有element.innerHTML分配的回调?

时间:2013-01-01 23:53:03

标签: javascript

使用Head.js并设置脚本元素的.src属性时,会有脚本准备就绪时调用的回调方法。

但是,我想通过为.innerHTML分配文本来加载脚本。执行此操作时,当我更新/编辑代码以使用此属性时,相同的回调没有触发。

/*addScriptText1
** modified from head.js
**
**
*/
function addScriptText1(file_name, callback, key) {
    var element = document.createElement('script');
    element.async = true;
    element.innerHTML = localStorage[file_name];
    element.onreadystatechange = element.onload = function () {
        $A.log('callback for element called');
        if ((!element.readyState || /loaded|complete/.test(element.readyState))) {
            localStorage[key + '_loaded'] = true;
            callback();
        }
    };
    document.head.appendChild(element);
}

2 个答案:

答案 0 :(得分:1)

当内联脚本插入DOM时,会立即执行脚本。这一切都是同步发生的,因此您不需要回调。

async在此处无效,因为您没有进行网络请求。类似地,readyState没用,因为你是以编程方式创建它,所以脚本会立即加载。

答案 1 :(得分:1)

跨浏览器(包括Firefox iirc)不支持在脚本元素上使用innerHTML。我不推荐这种方法。我会建议使用 eval new Function

Can scripts be inserted with innerHTML?

相关问题