动态的跨浏览器脚本加载

Aar*_*ken 13 javascript internet-explorer asynchronous cross-browser

我知道IE没有元素load事件<script>- 有没有办法可靠地弥补这一点?

我已经看过一些关于事物的讨论(例如requestState == "complete"),但没有什么可以证实的.


这是为了在脚本加载完成后调用代码,这样我就不必使用AJAX来加载新的源代码(从而消除了跨域AJAX的问题).

Ili*_*oly 25

您可以使用head.js之类的脚本加载器.它有自己的负载回调,它也会减少加载时间.


headjs代码:(略微修改为更便携)

function scriptTag(src, callback) {

    var s = document.createElement('script');
    s.type = 'text/' + (src.type || 'javascript');
    s.src = src.src || src;
    s.async = false;

    s.onreadystatechange = s.onload = function () {

        var state = s.readyState;

        if (!callback.done && (!state || /loaded|complete/.test(state))) {
            callback.done = true;
            callback();
        }
    };

    // use body if available. more safe in IE
    (document.body || head).appendChild(s);
}
Run Code Online (Sandbox Code Playgroud)

  • 我担心我不明白库如何减少因网络延迟导致的加载时间:) (3认同)
  • 此方法允许您控制并行和串行加载.它还可以让您知道它们何时完成.这比仅从上到下同步加载的浏览器更好,并且将保留下面的内容. (2认同)