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