我们怎么在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已经完全加载到页面中了!!!
js中常用方法以及document.readyState 判断页面是否加载完成 complete和interactive
传回XML 文件资料的目前状况。 基本语法 intState = xmlDocument.readyState 说 明 这个属性是只读的,传回值有以下的可能: 0-UNINITIALIZED:XML 对象被产生,但没有任何文件被加载。 1-LOADING:加载程序进行中,但文件尚未开始解析。 2-LOADED:部分的文件已经加载且进行解析,但对象模型尚未生效。 3-INTERACTIVE:仅对已加载的部分文件有效,在此情况下,对象模型是有效但只读的。 4-COMPLETED:文件已完全加载,代表加载成功。 范 例 alert("The readyState property is " + xmlDoc.readyState)
1.窗口关闭时执行的函数 window.onbeforeunload = function(){}
2.页面加载情况判断document.readyState值可以是complete和interactive
function document.onreadystatechange() { if(document.readyState=="complete") alert(document.readyState)}
或者:
document.onreadystatechange = init
function init() {
if(document.readyState=="complete") {.........}
}
3.屏蔽右键功能和严禁选中操作
//document.oncontextmenu=new Function("event.returnValue=false")
//document.onselectstart=new Function("event.returnValue=false")
4.鼠标位置判断
window.event.y和window.event.x //x,y是鼠标相对于当前浏览器的位置
window.event.screenY和window.event.screenX //screenX,screenY是相对于用户显示器的位置
window.event.clientY和window.event.clientX //clientX, clientY是鼠标当前相对于网页的位置,
window.event.offsetY和window.event.offsetX //offsetX, offsetY是鼠标当前相对于网页中的某一区域的位置,当鼠标位于页面中这一区域的左上角时offsetX=0, offsetY=0;
5.窗口大小判断
document.documentElement.scrollWidth和document.documentElement.scrollHeight //获取窗口的宽和高
6.返回值
window.event.returnValue="真的要关闭吗" //弹出一个确认信息,确认事件是否要执行
return confirm("真的要关闭吗") //两个是一样的功能
7.获取随机数 parseInt(Math.random()*100) //获取1至100之间的随机数
代码如下:复制代码 代码如下:
document.onreadystatechange = subSomething//当页面加载状态改变的时候执行这个方法.
function subSomething()
{
if(document.readyState == “complete”) //当页面加载状态
myform.submit()//表单提交
}
页面加载readyState的五种状态
原文如下:
0: (Uninitialized) the send( ) method has not yet been invoked.
1: (Loading) the send( ) method has been invoked, request in progress.
2: (Loaded) the send( ) method has completed, entire response received.
3: (Interactive) the response is being parsed.
4: (Completed) the response has been parsed, is ready for harvesting.