自從微軟某次針對瀏覽器的安全性更新過後,Flash網頁開始出現外框虛線,可見範例一即是以Object標記呼叫Flash的方式,以IE瀏覽器開啟時(Firefox並無此問題),Flash上會出現「點按以啟用並使用這個控制項」需先點一下該Flash才可正常啟用元件,之後在網路上找到了一個較佳的解決方案,是利用JavaScript加入呼叫Flash的HTML標記。
需先引入swfobject.js這個檔案
<script type=
"text/javascript" src=
"swfobject.js"></script>
在要放置Flash的地方加入
<div id=
"flashcontent">無法顯示Flash時的替代文字</div>
<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。
用法示範:
<script type=
"text/javascript">
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,可以下述方式達成:
<script type=
"text/javascript">
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,也可用以下方式接收。
<script type=
"text/javascript">
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>