动态的、跨浏览器的脚本加载 [英] Dynamic, cross-browser script loading
问题描述
我知道 IE 没有 元素的
load
事件——有什么办法可以可靠地弥补这一点吗?
I know that IE doesn't have a load
event for <script>
elements — is there any way to make up for that reliably?
我看到了一些讨论(例如,requestState == "complete"
),但没有什么可以验证的.
I've seen some talk of things (e.g., requestState == "complete"
) but nothing very verifiable.
这是为了在脚本加载完成后可以调用代码,这样我就不必使用 AJAX 来加载新源(从而消除跨域 AJAX 的问题).
This is to be used so that code can be called after a script is finished loading, so that I don't have to use AJAX to load new sources (thus eliminating issues with cross-domain AJAX).
推荐答案
你可以使用像 head.js一>.它有自己的加载回调,它也会减少加载时间.
You can use a script loader like head.js. It has its own load callback and it will decrease load time too.
来自 headjs
代码:(稍微修改为更便携)
From the headjs
code: (slightly modified to be more portable)
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);
}
这篇关于动态的、跨浏览器的脚本加载的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!