本文共 1349 字,大约阅读时间需要 4 分钟。
js >
test()是异步加载的demo.js中的函数,加载比较慢,所yi执行时候会报错
var script = document.createElement('script');script.type = 'text/javascript';script.src = 'demo.js';document.head.appendChild(script);test();
设置setTimeout或者使用script.onload可以解决。
var script = document.createElement('script');script.type = 'text/javascript';script.src = 'demo.js';document.head.appendChild(script);setTimeout(function(){ test();},2)
使用setTimeout时候,时间要设置在2ms以上,加载时间大约为1ms左右
var script = document.createElement('script');script.type = 'text/javascript';script.src = 'demo.js';document.head.appendChild(script);script.onload = function (){ test();}
onload除了IE都能用,IE有自己的
兼容性方法:
function loadScript(url, callback){ var script = document.createElement('script'); script.type = 'text/javascript'; if(script.readyState){ script.onreadystatechange = function(){ if(script.readyState == 'complete' || script.readyState == 'loaded'){ callback(); } } }else{ script.onload = function(){ callback(); } } script.src = url; document.head.appendChild(script);}loadScript('demo.js', function(){test()})
使用时候需要用匿名函数传参数,不然会显示test未定义,因为还没有加载结束;
Jquery里面的
$(document).ready(function(){ })
与window.onload的区别是:前者在dom文档解析后就会执行,而后者等到文档加载完毕才会执行 ,前者速度更快
转载地址:http://dhtzi.baihongyu.com/