http://www.qgy18.com/2009/08/flash_externalinterface/
http://www.qgy18.com/file/code/1.html
理论是js调用flash里面的代码是合情合理的,但是遇到firefox里面的代码不兼容(上面来你哥哥链接探讨的)也就罢了,但是,发现在firefox下出现flash没有加载完毕js就去调用flash里面的代码了,于是用了个什么:setTimeout(函授入口地址名称,2000);
其实在flsh一加载就把该函数给写上可以避免必须加载完毕才能调用?
解决了该问题,但是2秒啊,其主要原因是flash是广告的flash页面较大,造成加载缓慢,有没有办法通过firefox中的js某些函数判断firefox中的flash已经加载完毕了呢?google了一下好像有喔:
1.jquery来判断:
判断Flash加载完毕,然后再传递值进去。
步骤:01、我首先想到是否可以在HTML的<body>中用onload方法。
但是,失败。
02、后来我想到是否可以在Flash中用Actionscript判断是否加载完毕,
如果加载完毕,那么getURL或者fscommand一下调用HTML中的Javascript函数。
感觉比较复杂。
但是这个应该肯定行的通。
03、最后我想到了用jQuery来判断Flash是否加载完毕。
下面的代码:
$(document).ready(function(){
});
和onload方法几乎一样,都是在Flash加载之前就执行了。
04、因此我去搜了一下,还真有这样的插件:
http://www.malsup.com/jquery/media/
这个是媒体文件的插件,可以有mp3/mov/swf/wma等等。
但是就在这个网站上,它推荐,如果只是用Flash的话,
还是:
http://jquery.lukelutman.com/plugins/flash/
比较好。
网站简单,不过很够用。
05、目前看到的是1.0.1版本,文件名是jquery.flash.js
06、首先你得给它加载进来:
<script src="static/jquery.flash.js" type="text/javascript"></script>
然后在HTML的<body>之间加上:
07、这里的src是文件的位置。
width是宽,height是高,
flashvars是变量。
08、我们在flash中有一个动态文本框,实例名称是newtest。
另有几行代码:
stop();
newtest.text = str3;
str3就是我们从外面传递进来的变量值。
09、是的,就这样。
我们就能在Flash中看到显示:aa了。
高级:我现在在考虑能否在网页显示的过程中改变flashvars。
即,我按一个按钮,更新str3的值。
目前只能实现重新建一个flash对象,非常不爽。
2.js 判断flash加载进度源码
有时候我们需要判断一个flash加载了多少;我们可以用js判断:
其实最好还是flash加载完毕后调用我们的js或者去外边取数据,这种架构要秀气多了。
本站参考:
http://www.jackxiang.com/post/2370/
http://www.qgy18.com/file/code/1.html
理论是js调用flash里面的代码是合情合理的,但是遇到firefox里面的代码不兼容(上面来你哥哥链接探讨的)也就罢了,但是,发现在firefox下出现flash没有加载完毕js就去调用flash里面的代码了,于是用了个什么:setTimeout(函授入口地址名称,2000);
window.setTimeout("show_date_time()", 1000);
其实在flsh一加载就把该函数给写上可以避免必须加载完毕才能调用?
解决了该问题,但是2秒啊,其主要原因是flash是广告的flash页面较大,造成加载缓慢,有没有办法通过firefox中的js某些函数判断firefox中的flash已经加载完毕了呢?google了一下好像有喔:
1.jquery来判断:
判断Flash加载完毕,然后再传递值进去。
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName]
}else {
alert(document.embeds[movieName]);
return document.embeds[movieName];
}
}
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName]
}else {
alert(document.embeds[movieName]);
return document.embeds[movieName];
}
}
步骤:01、我首先想到是否可以在HTML的<body>中用onload方法。
但是,失败。
02、后来我想到是否可以在Flash中用Actionscript判断是否加载完毕,
如果加载完毕,那么getURL或者fscommand一下调用HTML中的Javascript函数。
感觉比较复杂。
但是这个应该肯定行的通。
03、最后我想到了用jQuery来判断Flash是否加载完毕。
下面的代码:
$(document).ready(function(){
});
和onload方法几乎一样,都是在Flash加载之前就执行了。
04、因此我去搜了一下,还真有这样的插件:
http://www.malsup.com/jquery/media/
这个是媒体文件的插件,可以有mp3/mov/swf/wma等等。
但是就在这个网站上,它推荐,如果只是用Flash的话,
还是:
http://jquery.lukelutman.com/plugins/flash/
比较好。
网站简单,不过很够用。
05、目前看到的是1.0.1版本,文件名是jquery.flash.js
06、首先你得给它加载进来:
<script src="static/jquery.flash.js" type="text/javascript"></script>
然后在HTML的<body>之间加上:
<body>
<div id="flash"></div>
</body>
然后是写我们自己的Javascript代码:
<script language="javascript">
$(document).ready(function(){
$('#flash').flash(
{ src: 'static/flash.swf',
width: 720,
height: 480,
flashvars: { str3: 'aa', str4: 'bb' }
},
{ version: 8 }
);
});
</script>
<div id="flash"></div>
</body>
然后是写我们自己的Javascript代码:
<script language="javascript">
$(document).ready(function(){
$('#flash').flash(
{ src: 'static/flash.swf',
width: 720,
height: 480,
flashvars: { str3: 'aa', str4: 'bb' }
},
{ version: 8 }
);
});
</script>
07、这里的src是文件的位置。
width是宽,height是高,
flashvars是变量。
08、我们在flash中有一个动态文本框,实例名称是newtest。
另有几行代码:
stop();
newtest.text = str3;
str3就是我们从外面传递进来的变量值。
09、是的,就这样。
我们就能在Flash中看到显示:aa了。
高级:我现在在考虑能否在网页显示的过程中改变flashvars。
即,我按一个按钮,更新str3的值。
目前只能实现重新建一个flash对象,非常不爽。
2.js 判断flash加载进度源码
有时候我们需要判断一个flash加载了多少;我们可以用js判断:
<div id="d1">
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="mFlash"
WIDTH="600" HEIGHT="300">
<PARAM NAME=quality VALUE=high>
<param name="Play" value="-1">
<PARAM NAME=movie VALUE="http://www.toto369.net/sydm/52.swf">
</OBJECT>
</div>
<input id="txt" type="text" value="">
<div id="d2" style="visibility:hidden">
flash已经加载完成
</div>
<script language="javascript">
function ck()
{
var mFlash=document.getElementById("mFlash");
var txt=document.getElementById("txt");
txt.value=mFlash.PercentLoaded()+"%"
if(txt.value=="100%")
{
document.getElementById("d2").style.visibility="visible"
clearInterval(timer)
}
}
var timer=setInterval("ck()",1000)
</script>
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="mFlash"
WIDTH="600" HEIGHT="300">
<PARAM NAME=quality VALUE=high>
<param name="Play" value="-1">
<PARAM NAME=movie VALUE="http://www.toto369.net/sydm/52.swf">
</OBJECT>
</div>
<input id="txt" type="text" value="">
<div id="d2" style="visibility:hidden">
flash已经加载完成
</div>
<script language="javascript">
function ck()
{
var mFlash=document.getElementById("mFlash");
var txt=document.getElementById("txt");
txt.value=mFlash.PercentLoaded()+"%"
if(txt.value=="100%")
{
document.getElementById("d2").style.visibility="visible"
clearInterval(timer)
}
}
var timer=setInterval("ck()",1000)
</script>
其实最好还是flash加载完毕后调用我们的js或者去外边取数据,这种架构要秀气多了。
本站参考:
http://www.jackxiang.com/post/2370/
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/2371/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2009-12-24 10:19
评论列表