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