我在A(yíng)jax中國上曾經(jīng)對比過(guò)國內門(mén)戶(hù)網(wǎng)站對Flash激活限制的處理。除了qq.com,各大門(mén)戶(hù)網(wǎng)站上的flash都已經(jīng)解決了激活限制的問(wèn)題。淘寶的頁(yè)面上也常常會(huì )使用到Flash,激活限制導致用戶(hù)的交互性體驗感受不夠友善。
我們一直想解決此問(wèn)題。但是國內門(mén)戶(hù)網(wǎng)站的做法都略為麻煩,要么需要為每個(gè)flash編寫(xiě)額外的js,要么就是在頁(yè)面上放置flash的位置打上一塊<script>補丁,利用SWFObject或者UFO提供的腳本寫(xiě)入flash。
網(wǎng)易的做法算是最技術(shù)的了,它的原理可以簡(jiǎn)單說(shuō)一下(感謝在網(wǎng)易工作的朋友的闡析):通過(guò)外部引入的js代碼覆蓋主頁(yè)面的document.write方法,這樣在主頁(yè)面上利用document.write方法時(shí)其實(shí)是外部文件的函數來(lái)寫(xiě)入的,實(shí)現了active控件下載和主頁(yè)面分離。這樣也就避開(kāi)了激活限制。
可是,以上的所有解決方法,Flash都是通過(guò)腳本來(lái)寫(xiě)入的。比較注重web標準的網(wǎng)站會(huì )附上一段<noscript >來(lái)彌補禁用JavaScript的用戶(hù)。但大多數是置之不理。
一番google(我真的是用了yahoo,不過(guò)沒(méi)找到什么),在SitePoint上發(fā)現了一份很有價(jià)值的文獻ObjectSwap: Bypassing the ActiveX Activation Issue in IE,如獲至寶。
ObjectSwap提供的實(shí)現只需要在<head>中引入一個(gè)腳本。雖然也是使用腳本,但其邏輯是在頁(yè)面加載完成后,重寫(xiě)一次<object>標簽來(lái)實(shí)現自動(dòng)激活。頁(yè)面中的flash依然是標準的HTML。不需要通過(guò)document.write寫(xiě)入。而且對于禁用js的用戶(hù)Flash依然可以正常顯示。這應該算是最unobtrusive的一種實(shí)現了。
最新的ObjectWrap 可以從這里下載。
原來(lái)的腳本有6k,我簡(jiǎn)化了一些邏輯,并通過(guò)條件注釋讓腳本只為IE6/7服務(wù)。讓人欣喜的是,不光是Flash,只要是<object>,ObjectWrap都會(huì )處理,這樣我們在安全登錄淘寶或者支付寶輸入密碼的時(shí)候,也可以節約一個(gè)單擊的氣力了。
至于為什么重寫(xiě)<object>可以解決激活限制,就不要深究了,正如IE那一系列讓人抓狂的CSS hack。我們只能逼自己記住它,傻瓜才會(huì )去弄清楚為什么。
最后向ObjectWrap的作者 Karina Steffens 致敬!
噢頂啊,夠技術(shù)的!^_^
@_@頂啊~~~??!
另外使用,swfobject 或者UFO 來(lái)進(jìn)行的Flash搜索引擎優(yōu)化也非常好的,即便是搜索引擎不理解flash,但有替代內容可以代替Flash的,保持兩個(gè)內容一致,就不會(huì )被認為是作弊
看過(guò)CSS Mastery里面使用Flash Swaping的方法來(lái)實(shí)現標題特殊字體的辦法,都應該能想到用Swaping的方法來(lái)做這個(gè),不過(guò)就是Flash swap Flash罷了?,F在終于有人做了,不錯不錯,直接拿來(lái)用就行。
一般我從收藏夾打開(kāi)taobao,鼠標默認位置就在這個(gè)flash上.
一開(kāi)始還是有激活框的,
不過(guò)有一個(gè)明顯的重寫(xiě)過(guò)程之后就OK了,呵呵.
利用document.write Flash代碼的方式不可取.在頁(yè)面中間引外部js文件會(huì )中斷頁(yè)面下載.objectSwap.js也不完全unobtrusive,其中window.onload=function(){…}這個(gè)得在應用時(shí)改造一下.
//lol
“一番google(我真的是用了yahoo,不過(guò)沒(méi)找到什么),在SitePoint上發(fā)現了一份很有價(jià)值的文獻ObjectSwap: Bypassing the ActiveX Activation Issue in IE,如獲至寶?!?
一段js已經(jīng)夠用了,不過(guò)無(wú)法保持flash的透明背景,實(shí)在郁悶
很有用:)多謝分享。
聯(lián)系客服