自從微軟某次針對瀏覽器的安全性更新過後,Flash網頁開始出現外框虛線,可見範例一即是以Object標記呼叫Flash的方式,以IE瀏覽器開啟時(Firefox並無此問題),Flash上會出現「點按以啟用並使用這個控制項」需先點一下該Flash才可正常啟用元件,之後在網路上找到了一個較佳的解決方案,是利用JavaScript加入呼叫Flash的HTML標記。
需先引入swfobject.js這個檔案
在要放置Flash的地方加入
<script type= "text/javascript">
var fo = new FlashObject ( "so_tester.swf", "mymovie", "300", "300", "7", "#ff00ff" );
fo. write ( "flashcontent" );
</script>
FlashObject的參數由左至右代表檔案名稱、ID、寬度、高度、Flash版本、背景色,fo.write是把呼叫Flash的標記內容寫到ID為flashcontent的DIV內,效果請見範例二。
FlashObject也會自動偵測版本不符的用戶端並提示升級,效果請見範例三。
另外有一些額外的設定可選擇性加入。
- useExpressInstall:快速升級FlashPlayer,值為ture/false。
- quality:預設為High(高品質)。
- xiRedirectUrl:指定useExpressInstall升級完後的轉向網址。
- redirectUrl:指定若FlashPlayer不正確時的轉向網址。
- detectKey:變數名,預設為detectflash,若不想偵測flash版本,可在網址列加上detectflash=false。
用法示範:
var fo = new FlashObject ( "so_tester.swf", "mymovie", "300", "300", "7", "#ff00ff" );
fo. addParam ( "useExpressInstall", "ture" );
fo. addParam ( "quality", "high" );
fo. addParam ( "xiRedirectUrl", "http://blog.orz.tw" );
fo. write ( "flashcontent" );
</script>
其他選擇性參數及設定值可參考Adobe網站上的說明:
http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_12701
若要將變數傳遞給Flash,可以下述方式達成:
var fo = new FlashObject ( "so_tester.swf", "mymovie", "300", "300", "7", "#ff00ff" );
fo. addVariable ( "variable1", "value1" );
fo. addVariable ( "variable2", "value2" );
fo. write ( "flashcontent" );
</script>
若變數由網址列傳遞,如http://www.example.com/?variable1=value1&variable2=value2,也可用以下方式接收。
var fo = new FlashObject ( "so_tester.swf", "mymovie", "300", "300", "7", "#ff00ff" );
fo. addVariable ( "variable1", getQueryParamValue ( "variable1" ) );
fo. addVariable ( "variable2", getQueryParamValue ( "variable2" ) );
fo. write ( "flashcontent" );
</script>