最近發現,開發的Web應用在客戶的某些IE(8,9,11)中彈出不了Windows的字體對話框。windows
經過 F12 跟蹤,錯誤代碼是「-2146827850」,錯誤信息是「 對象不支持ShowFont屬性和方法」安全
問題的緣由分析:測試
應該是IE沒法正確載入相應的ActiveX控件引發的。幾種狀況字體
一、客戶電腦上沒有註冊好 ComDlg32.ocxthis
解決方法:orm
對於32位Windows: 把 ComDlg32.ocx 拷貝到 C:\windows\system32 目錄下;對象
對於64位Windows: 把 ComDlg32.ocx 拷貝到 C:\windows\sysWOW64 目錄下;blog
使用管理員身份,運行 regsvr32 C:\windows\system32\ComDlg32.ocxinternet-explorer
二、HTML中沒有按微軟的要求編寫ActiveX 的引用聲明開發
若是缺乏如下代碼,也會出現之上的問題
<object classid="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
<param name="LPKPath" value="comdlg.lpk">
</object>
解決方法:加入相應的聲明
三、由於安全緣由,IE 禁止了相關 ActiveX控件的使用
解決方法:使用regedit, 對於comdlg32.ocx 相應的註冊項是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility{F9043C85-F6F2-101A-A3C9-08002B2F49FB},找到並刪除它。
參考連接:
http://stackoverflow.com/questions/1146872/comdlg32-ocx-error-object-doesnt-support-this-property-or-method
http://stackoverflow.com/questions/5705138/internet-explorer-9-ie9-hangs-after-closing-activex-form-e-g-common-dialog-c
https://support.microsoft.com/zh-cn/help/240797/how-to-stop-an-activex-control-from-running-in-internet-explorer
https://answers.microsoft.com/en-us/ie/forum/ie9-windows_7/ie9-internet-explorer-window-becomes-disabled-when/7bd351e9-c94f-e011-8dfc-68b599b31bf5
測試代碼:http://files.cnblogs.com/files/finema/ComDlgTest.rar