flash getURL或navigateToURL快顯視窗被IE攔截方法

來源:互聯網
上載者:User

flash geturl或navigatetourl快顯視窗被ie攔截方法

ie7和firefox(我使用的版本是2.0.0.11)會阻止用navigatetourl方法開啟新視窗,而as2中的geturl方法則不會,讓人很不爽。既然項目選擇了as3開發,就只能想辦法來解決。
 
首先當然想到的是externalinterface了,測試發現還是會被blocked。後來想添加wmode會不會有所協助,於是在頁面中添加wmode屬性為opaque,果然ok了。
 
現提供as3中的geturl方法:
 
function geturl(url:http://www.111cn.net/flash_a/113/string,window:string=”_blank”):void{ var broswer:string=externalinterface.call(”function getbrowser(){return navigator.useragent}”) as string; if(broswer.indexof(”firefox”)!=-1 || broswer.indexof(”msie 7.0′)!=-1){ externalinterface.call(’window.open(”‘+url+’”,”‘+window+’”)’); }else{ navigatetourl(new urlrequest(url),window); }}
 
使用方法跟as2中的geturl一樣。另外,我只測試了ie6/7,firefox2,並未對safari等其他瀏覽器做測試。最後,最最重要的就是在 html中把flash對象設定wmode屬性為opaque或transparent。因為wmode屬性預設為window,這表明此flash應用程式與html層沒有任何互動。
 
上文的思路是用as call js來實現彈窗,這需要配合wmode=’opaque’或者wmode=’transparent’。
 
可是現在時代已經不同,遊戲規則又變化了,上文的方法已經不再適用。
我剛測試,
Firefox3.5.3測試是不會攔截的。
用ie7和ie8測試都被攔截。
 
真奇怪,有這種事情!於是我把收藏的幾個flash酷站整出來一個個看過去,發現其中aps教程ou的網站上有_blank的內容不會被攔截~
調查了其網頁的代碼,發現和眾多會被攔截的網站有一點不同:wmode。
 
解決方案:
終於發現通過設定wmode可以解決問題:當wmode=’window’(預設值)的時候,ie就不再攔截了。
這也許和ie下activex的機制有關吧。
上面引用的文章中提到的 “最最重要的就是在 html中把flash對象設定wmode屬性為opaque或transparent” 這個也不用太擔心。wmode為window的時候仍然可以call js。
 
雖然有解決方案了,可是我又很不情願把wmode改成window。看來我還得和js通訊,讓js那邊負責繞過攔截。
 
不過仔細想想其實問題不大,因為我們國內的網友的局勢很有趣。
一般用Firefox或者ie7+或者safari、google chrome的都是愛趕潮流的,或者是玩過各種web2.0產品的,算是高端一些的網民。這批人都懂得屏蔽是個啥意思,“屏蔽彈窗”這樣的善意功能也能更好地起作用。這批人往往都會設定白名單,所以並不需要擔心他們由於瀏覽器屏蔽而訪問不了內容。
而剩下的大部分使用xp+原裝ie6的使用者,很多並不是對網路很有熱情,正好這部分使用者的瀏覽器也不會攔截我們flash,他們也不用學會網路過濾設定。
嘿嘿,各司其位,自然和諧。
 
幾種wmode的不同
額,順便羅列一下wmode的幾點不同。總結了幾種wmode有什麼不同,各自符合什麼情況使用:
window是預設的,視窗模式,吃cpu不嚴重
transparent透明無視窗模式
opaque不透明無視窗模式
效率最高的是window模式
透明用transparent
而需要動態互動(比如js)或者window模式不穩定的情況下用opaque
window和transparent在ie6的iframe下拖動會出現花屏——個人經驗。
還有一點,無視窗模式消耗資源大,但是能保證幀頻

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.