UPDATE:
我有以下代码:
<script type="text/javascript">
function addScript(url) {
var script = document.createElement('script');
script.src = url;
document.getElementsByTagName('head')[0].appendChild(script);
}
addScript('http://google.com/google-maps.js');
addScript('http://jquery.com/jquery.js');
...
// run code below this point once both google-maps.js & jquery.js has been downloaded and excuted
</script>
在下载并执行所有必需的 JS 之前,如何防止代码执行?在上面的示例中,这些必需的文件是 google-maps.js 和 jquery.js。
您可以使用onload
大多数浏览器的脚本元素的事件,并使用回调参数:
Edit:当您以这种方式加载脚本时,您无法真正停止代码的执行(并且大多数情况下发出同步 Ajax 请求不是一个好主意)。
但是你可以链接回调,所以如果你有一些依赖于两者的代码,Two.js and Three.js, 你可以chain加载动作,例如:
loadScript('http://example.com/Two.js', function () {
// Two.js is already loaded here, get Three.js...
loadScript('http://example.com/Three.js', function () {
// Both, Two.js and Three.js loaded...
// you can place dependent code here...
});
});
执行:
function loadScript(url, callback) {
var head = document.getElementsByTagName("head")[0],
script = document.createElement("script"),
done = false;
script.src = url;
// Attach event handlers for all browsers
script.onload = script.onreadystatechange = function(){
if ( !done && (!this.readyState || // IE stuff...
this.readyState == "loaded" || this.readyState == "complete") ) {
done = true;
callback(); // execute callback function
// Prevent memory leaks in IE
script.onload = script.onreadystatechange = null;
head.removeChild( script );
}
};
head.appendChild(script);
}
对于 IE 来说,onreadystatechange http://msdn.microsoft.com/en-us/library/ms536957(VS.85).aspx事件必须被绑定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)