今天遇到 IE7 執行
Flash 出現”不合法的字元”錯誤,用 Visual Studio 2008 除錯中斷在如下程式
<html><head><script
src="res://mshtml.dll/objectembed_neutral.js"></script></head><body
objectSource="http://stu2.learnbank.com.tw/1000110615/ch1/index.swf"
onload="ObjectLoad();" leftmargin=0 topmargin=0
scroll=no> <form id="objectDestination"></form>
</body></html>
程式死在 onload ,而 ObjectLoad() 存在於 mshtml.dll
中,msthml.dll 又放置在系統目錄下。也就是說如果沒有足夠的權限,執行上述 Script 會發生錯誤。按照這個思路下來,我只要給
IE7 存取系統目錄權限即可執行,驗證後確實賦予 Administrator 權限後,該 Flash 亦可執行。
不過後來找到
Microsoft 的官方說明[1],文件說只要符合下述兩個條件就會出現這個錯誤
the Internet Web zone or in the Intranet Web zone.
active content to run in files on My Computer check box is
selected in Internet Explorer 7.
文中也提到可在下面登錄檔新增 DWORD 型態的
iexplorer.exe 鍵值,並將其值給 0 來解決
HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet
ExplorerMainFeatureControlFEATURE_BLOCK_LMZ_SCRIPT
不過這樣有點笨
@_@
而且為什麼執行 Flash 需要動用到 Administrator 權限 … 真怪~
後續在繼續關注
UPDATE: 後來請 Flash 製作的人確認,似乎是 Flash 包含一些呼叫 HTML 中的 Javascript 語法,而
Javascript 會操控 ActiveX 元件造成安全性問題,進而導致 IE 會執行上述的腳本而出錯。
UPDATE: 2010/01/08
* 可將網站加入信任網站解決
* 直接用 IE 顯示 swf 也會有這個問題,所以用 HTML 包含就可解決
參考資料
[1] MSDN, “Error message when you try to open an ActiveX control-based MIME handler in Windows Internet Explorer 7: "Invalid character"”
發表迴響