前天微軟更新了IE瀏覽器,針對(duì)IE的更新,使ActiveX內(nèi)容不能自載入的問(wèn)題引起了許多人的關(guān)注.這些改變可以在Adobe的某些軟件中看到,包括flashplayer.Authorware player, shockwave Player, SVG Viewer,Help Center 和 Adobe Reader,當(dāng)然還有 Sun Java, Apple QuickTime, RealNetworks,RealPlayer和其它的ActiveX .通過(guò)某些方法嵌入到html頁(yè)面中的交互內(nèi)容可能不能響應(yīng)用戶的輸入(例如,鍵盤,鼠標(biāo))直到用戶點(diǎn)擊要么激活要么繼續(xù)loading .下面我的看看它到底是怎么一回事,并怎樣解決它來(lái)使用戶最大限度的方便瀏覽.
問(wèn)題
當(dāng)你查看web頁(yè)面時(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的頁(yè)面.點(diǎn)擊這個(gè)內(nèi)容激活它.
方法2 如果你正在開(kāi)發(fā)一個(gè)網(wǎng)站,移除針對(duì)ActiveX內(nèi)容所需的用戶激活過(guò)程.針對(duì)此Adobe提供了一份基于javascriptr 解決文檔.這里 通過(guò)使用Adobe的解決文檔可以解決上述問(wèn)題.
那么除了上述方法之外還有沒(méi)有其它更簡(jiǎn)單的方法呢,答案是肯定的.可以使用deconcept 的flashObject 相比而言會(huì)比使用Adobe的方法更簡(jiǎn)單一些.并且運(yùn)行狀況是良好的.這里下載Download FlashObject 1.3 (38 hits)
基本方法如下:
只需要將flashobject.js 包含在你的html頁(yè)面內(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)備的.如果你沒(méi)有裝flashplayer.那么里面的那行字會(huì)顯示出來(lái)如顯示為”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>
用來(lái)嵌入swf,比如當(dāng)前的影片文件是”movie.swf”, id是”mymoive,寬是200,高是100,flashplayer版本是7,背景色是#336699.
下面我們來(lái)看一下我們嵌入一個(gè)flash的范例. 根據(jù)上面的基本工作方式,我們還要嵌入一些其它的參數(shù).來(lái)滿足我們一些其它的需要比如我們有一個(gè)文件名為ws.swf,我們想把它嵌入到頁(yè)面中,又不至于受IE更新的影響.
1.在頁(yè)面中包入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)容已介紹過(guò)它里面的參數(shù),其中的ws.swf可以是相對(duì)路徑也可以是絕對(duì)路徑,如你可以直接輸入網(wǎng)站加上你的swf文件名字. 在下面的一段就是我們可以加入的參數(shù),從上到下分別為quality質(zhì)量,wmode transparent透明,salign對(duì)齊,scale縮放,loop循環(huán)等. 這樣我們的嵌入過(guò)程就完成了.
如果你想使用flashVars來(lái)進(jìn)行html與flash之前的通訊,使用flashobject也是很容易的,但有一點(diǎn)使用flashobjcet時(shí)只有在swf剛一載入時(shí)傳遞參數(shù).并且是以值對(duì)的形式來(lái)傳遞,如下: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ù)的說(shuō)明.你可以詳細(xì)查看
除了這種簡(jiǎn)單方法之外,這還有一個(gè)與之類似的,我并沒(méi)有仔細(xì)看,如果你有興趣可以仔細(xì)看一下.這里ufo
哈哈,針對(duì)微軟IE的更新改變,我們已經(jīng)能輕松的去掉必須要點(diǎn)擊一下才能看的過(guò)程了.如果你有空不要忘了去微軟網(wǎng)站上看一下,它用的是什么,最后,不要忘了更新你網(wǎng)站,Cheers :)
出處:WebStudio
責(zé)任編輯:moby
◎進(jìn)入論壇Flash專欄版塊參加討論
|