解決IE更新對(duì)FLASH產(chǎn)生影響的方法
此文之前發(fā)布在webstudio的blog上,基于日后的需要和查找的方便,現(xiàn)重新整理,發(fā)布于webstudio教程中心.
前天微軟更新了IE瀏覽器,針對(duì)IE的更新,使ActiveX內(nèi)容不能自載入的問題引起了許多人的關(guān)注.這些改變可以在Adobe的某些軟件中看到,包括flashplayer.Authorware player, shockwave Player, SVG Viewer,Help Center 和 Adobe Reader,當(dāng)然還有 Sun Java, Apple QuickTime, RealNetworks,RealPlayer和其它的ActiveX .通過某些方法嵌入到html頁面中的交互內(nèi)容可能不能響應(yīng)用戶的輸入(例如,鍵盤,鼠標(biāo))直到用戶點(diǎn)擊要么激活要么繼續(xù)loading .下面我的看看它到底是怎么一回事,并怎樣解決它來使用戶最大限度的方便瀏覽,因?yàn)?a href="http://www./portfolio/index.htm" target=_blank>webstudio 的flash網(wǎng)站建設(shè)是主要的業(yè)務(wù),所以很是想找到簡(jiǎn)單的解決辦法.
問題
當(dāng)你查看web頁面時(shí),windows下的IE瀏覽器會(huì)將ActiveX內(nèi)容顯不為一個(gè)矩形框和一個(gè)提示內(nèi)容為”Click to activate and use this control”意思就是你需要激活A(yù)ctiveX的內(nèi)容才可以查看或交互控制,ActiveX內(nèi)容可能或不能象你預(yù)想的那樣載入并進(jìn)行播放. 可以查看Adobe提供的演示:這里
Adobe的解決方案
有如下兩種解決方法: 方法1 如果你瀏覽了包含ActiveX的頁面.點(diǎn)擊這個(gè)內(nèi)容激活它. 方法2 如果你正在開發(fā)一個(gè)網(wǎng)站,移除針對(duì)ActiveX內(nèi)容所需的用戶激活過程.針對(duì)此Adobe提供了一份基于javascriptr 解決文檔.這里 通過使用Adobe的解決文檔可以解決上述問題.
那么除了上述方法之外還有沒有其它更簡(jiǎn)單的方法呢,答案是肯定的.可以使用deconcept 的flashObject 相比而言會(huì)比使用Adobe的方法更簡(jiǎn)單一些.并且運(yùn)行狀況是良好的.這里下載Download FlashObject 1.3 (38 hits)
基本方法如下: 只需要將flashobject.js 包含在你的html頁面內(nèi),然后加上一點(diǎn)javascript代碼嵌入flash swf就ok了. 它的工作方式如下:
代碼: |
|
<script type="text/javascript" src="flashobject.js"></script>
<div id="flashcontent"> This text is replaced by the Flash movie. </div>
<script type="text/javascript"> var fo = new FlashObject("movie.swf", "mymovie", "200", "100", "7", "#336699"); fo.write("flashcontent"); </script>
|
|
簡(jiǎn)單分析一下,或是你可以仔細(xì)看flashObject的文檔
代碼: |
|
<div id="flashcontent"> This text is replaced by the Flash movie. </div>
|
|
這一段相當(dāng)于我們?cè)跒榉胖胒lash文件而準(zhǔn)備的一個(gè)holder.有些象我們常用的空的MovieClip holder.為放入內(nèi)容而準(zhǔn)備的.如果你沒有裝flashplayer.那么里面的那行字會(huì)顯示出來如顯示為”This text is replaced by the Flash movie.” 如果你裝了flashplayer,那這行字是不會(huì)顯示的,用戶基本上是看不到的,同時(shí)它還有一個(gè)好處是你可以把這行內(nèi)容變成的你搜索關(guān)鍵字,google會(huì)很容易搜到它的.呵呵,一舉兩得. 下面這段一看就知道是什么了.
代碼: |
|
<script type="text/javascript"> var fo = new FlashObject("movie.swf", "mymovie", "200", "100", "7", "#336699"); fo.write("flashcontent"); </script>
|
|
用來嵌入swf,比如當(dāng)前的影片文件是”movie.swf”, id是”mymoive,寬是200,高是100,flashplayer版本是7,背景色是#336699.
下面我們來看一下我們嵌入一個(gè)flash的范例. 根據(jù)上面的基本工作方式,我們還要嵌入一些其它的參數(shù).來滿足我們一些其它的需要比如我們有一個(gè)文件名為ws.swf,我們想把它嵌入到頁面中,又不至于受IE更新的影響. 1.在頁面中包入flashobject.js文件 <script type="text/javascript" src="flashobject.js"></script> 一般這行代碼可以寫在body標(biāo)簽之前即可. 2.把下面這段代碼加在它下方.
代碼: |
|
<div id="flashcontent" style="width: 300px; height: 200px"></div> <script type="text/javascript"> var fo = new FlashObject("ws.swf", "mymovie", "300", "200px", "7", "#336699"); fo.addParam("quality", "low"); fo.addParam("wmode", "transparent"); fo.addParam("salign", "t"); fo.addParam("scale", "noscale"); fo.addParam("loop", "false"); fo.write("flashcontent"); </script>
|
|
從上面的代碼中我們看出,我們將要把FLASH放在id為flashcontent層中,它的寬為300高為200像素,那么應(yīng)是和我們的swf文件的大小是相同的.如果你想縮放也可以是不同的.下面var fo = new FlashObject("ws.swf", "mymovie", "300", "200px", "7", "#336699"); 是嵌入flash文件,在之前的內(nèi)容已介紹過它里面的參數(shù),其中的ws.swf可以是相對(duì)路徑也可以是絕對(duì)路徑,如你可以直接輸入網(wǎng)站加上你的swf文件名字. 再下面的一段就是我們可以加入的參數(shù),從上到下分別為quality質(zhì)量,wmode transparent透明,salign對(duì)齊,scale縮放,loop循環(huán)等. 這樣我們的嵌入過程就完成了.
如果你想使用flashVars來進(jìn)行html與flash之前的通訊,使用flashobject也是很容易的,但有一點(diǎn)使用flashobjcet時(shí)只有在swf剛一載入時(shí)傳遞參數(shù).并且是以值對(duì)的形式來傳遞,如下:variable1=value1&variable2=value2&variable3=value3 使用方法如下:
代碼: |
|
<script type="text/javascript"> var fo = new FlashObject("movie.swf", "mymovie", "200", "100", "7", "#336699"); fo.addVariable("variable1", "value1"); fo.addVariable("variable2", "value2"); fo.addVariable("variable3", "value3"); fo.write("flashcontent"); </script>
|
|
一旦這一步完成,那么所有的變量就已經(jīng)傳入到flash,你就可以靈活的在你的flash中的_root上使用了.
deconcept flashObject還提供了可以加入其它參數(shù)的說明.你可以詳細(xì)查看
除了這種簡(jiǎn)單方法之外,這還有一個(gè)與之類似的,我并沒有仔細(xì)看,如果你有興趣可以仔細(xì)看一下.這里ufo
哈哈,針對(duì)微軟IE的更新改變,我們已經(jīng)能輕松的去掉必須要點(diǎn)擊一下才能看的過程了.如果你有空不要忘了去微軟網(wǎng)站上看一下,它用的是什么,最后,不要忘了更新你網(wǎng)站,Cheers :)
|