在處理 Flash Event Site 時遇過一個問題,特此紀錄。
於 Chrome 時瀏覽 100% 寬高的 Flash Site 時都很正常,但到了 IE9 / IE8 中測試卻變成下圖這樣,僅有不到一半的區塊大小:
這是一頁 ASP.NET Webform 的頁面,裡面包了 <form id=”form1″ runat=”server”> 標籤,就是這個 form 標籤在 IE9/8 中的高度解釋造成 Flash 區塊高度無法到達 100% 瀏覽器高度。
解決方法如下:
由於要在網頁中呼叫 Flash 裡面用 ExternalInterface.addCallback 加入的事件,
除了 HTML 中Flash 物件加入時要設定 id & name,還有 allowScriptAccess params 使其允許、AS 中也要加入 flash.system.Security.allowDomain(sourceDomain) 外,
在不同瀏覽器上也會因為 js 抓取 flash 物件的方式不同而要個別判斷。
Calling a custom FLASH method from IE7 & IE8 – stackOverflow 提供了一個方法,可通用於 IE, Chrome, Firefox:
function thisMovie(movieName) {
return document[movieName] || window[movieName];
}
然後如果要 call Flash 中的 function 的話可以這樣寫:
function callExtFunction(g){
var flash = thisMovie('flash物件的id&name');
if (flash) { flash.flashFunction名稱(g); }
}
就醬子。
以前的某個案子客戶反映,他們升級到 IE9 之後,所有 FCKeditor 的功能對話框 (例如: 從 Word 貼上、超連結) 都跑不出來,
經實際測試後發現果真如此,但只要將 IE 切到 IE8 模式(按 F12 的開發工具功能表最後兩欄可切換)就一切正常。