怎么判断js脚本加载是否完成

怎么判断js脚本加载是否完成,第1张

我们可以对加载的 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>

function include_js(file) {

var _doc = document.getElementsByTagName('head')[0]

var js = document.createElement('script')

js.setAttribute('type', 'text/javascript')

js.setAttribute('src', file)

_doc.appendChild(js)

if (!/*@cc_on!@*/0) { //if not IE

//Firefox2、Firefox3、Safari3.1+、Opera9.6+ support js.onload

js.onload = function () {

alert('Firefox2、Firefox3、Safari3.1+、Opera9.6+ support js.onload')

}

} else {

//IE6、IE7 support js.onreadystatechange

js.onreadystatechange = function () {

if (js.readyState == 'loaded' || js.readyState == 'complete') {

alert('IE6、IE7 support js.onreadystatechange')

}

}

}

return false

}

include_js('http://www.planabc.net/wp-includes/js/jquery/jquery.js')

</script>

在正常的加载过程中,js文件的加载是同步的,也就是说在js加载的过程槐好中,浏览器会阻塞接下来的内容的解析。这时候,动态加载便显得尤为重要了,由于它是异步加载,因此,它可以在后台自动下载,铅胡铅并不会妨碍其它内容的正常解析,由此,便可以提高页面首次加载的速度。在IE或一些基于IE内核的浏览器做唯中(如Maxthon),它是通过script节点的readystatechange方法来判断的,而其它的一些浏览器中,往往是通过load事件来决定的,如下代码:function dynamicLoad(){var _doc=document.getElementsByTagName('head')[0]var script=document.createElement('script')script.setAttribute('type','text/javascript')script.setAttribute('src','jquery-1.4.4.js')script.onload=script.onreadystatechange=function(){if(!this.readyState||this.readyState=='loaded'||this.readyState=='complete'){alert('done')}script.onload=script.onreadystatechange=null}}这是因为,如果script节点没有添加到DOM树中,那么在chrome和firefox中是不会响应script的load事件的。但是IE中却可以。。修改后如下代码:function dynamicLoad(){var _doc=document.getElementsByTagName('head')[0]var script=document.createElement('script')script.setAttribute('type','text/javascript')script.setAttribute('src','jquery-1.4.4.js')_doc.appendChild(script)script.onload=script.onreadystatechange=function(){if(!this.readyState||this.readyState=='loaded'||this.readyState=='complete'){这时候,所有的浏览器都可以响应,你可以尝试一下~

js怎么判断flash是否加载完毕了呢?

我们怎么在flash加载完毕之时,回调一个我们设定的js函数?

这个问题,一直困扰了我很久,直到今天,请教了一个非常牛B的人物之后,突然来了感觉!

呵呵,也许,这个问题蔽含贺在你们看来不是问题,不过对于我来说,确实是个问题,因为我一直不知道该怎么判断swf文件是否加载完毕了?

从前都是只知道img.onload等等。

好了,言归正传,我们到底该怎样判断一个flash是否加载完了呢?

没错,就是轮询,然后判断flash的某个方法是否能正常老脊运行?

示例如下(伪代码):

01 (function () {02 var flash = 网页上某个flash对象。03 04 var interval = setInterval(function () {05 try { 06 if(flash.IsPlaying()) { //轮询flash的某个方法即可 07 callBack &&callBack.call(flash, args)//回调函数08 clearInterval(interval) 09 } 10 } catch (ex) {11 12 } 13 }, 1000)14 15 var callBack = function () {16 alert('loaded')17 } 18 })()

/宏派/具体运用时,flash放进setInterval或者setTimeout的函数闭包中时,可能会由于JavaScript单线程问题,导致flash不能调用IsPlaying等flash player函数或者调用结果不对等状况,这里有个临时的解决办法,我们可以读取在轮询函数中读取flash的TotalFrames属性,读取得到,我们就可以认为flash已经完全加载到页面中了!!!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12259617.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存