在“按需加载”的需求中,我们经常会判断当脚本加载完成时,返回一个回调函数,那如何去判断脚本的加载完成呢?
我们可以对加载的 JS 对象使用 onload 来判断(js.onload),此方法 Firefox2、Firefox3、Safari3.1+、Opera9.6+ 浏览器都能很好的支持,但 IE6、IE7 却不支持。曲线救国 —— IE6、IE7 我们可以使用 js.onreadystatechange 来跟踪每个状态变化的情况(一般为 loading 、loaded、interactive、complete),当返回状态为 loaded 或 complete 时,则表示加载完成,返回回调函数。
对于 readyState 状态需要一个补充说明:
1.在 interactive 状态下,用户可以参与互动。
2.Opera 其实也支持 js.onreadystatechange,但他的状态和 IE 的有很大差别。
<script>
<P>function include_js(file) {<BR> var _doc = document.getElementsByTagName('head')[0];<BR> var js = document.createElement('script');<BR> js.setAttribute('type', 'text/javascript');<BR> js.setAttribute('src', file);<BR> _doc.appendChild(js);
<P> if (!/*@cc_on!@*/0) { //if not IE<BR> //Firefox2、Firefox3、Safari3.1+、Opera9.6+ support js.onload<BR> js.onload = function () {<BR> alert('Firefox2、Firefox3、Safari3.1+、Opera9.6+ support js.onload');<BR> }<BR> } else {<BR> //IE6、IE7 support js.onreadystatechange<BR> js.onreadystatechange = function () {<BR> if (js.readyState == 'loaded' || js.readyState == 'complete') {<BR> alert('IE6、IE7 support js.onreadystatechange');<BR> }<BR> }<BR> }
<P> return false;<BR>}
<P><BR>include_js('http://www.planabc.net/wp-includes/js/jquery/jquery.js');<BR></script>
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn