最近發現,開發的Web應用在客戶的某些IE(8,9,11)中彈出不了Windows的字型對話方塊。

通過 F12 跟蹤,錯誤程式碼是“-2146827850”,錯誤資訊是“ 物件不支援ShowFont屬性和方法”

問題的原因分析:

應該是IE無法正確載入相應的ActiveX控制元件引起的。幾種情況

1、客戶電腦上沒有註冊好  ComDlg32.ocx

解決方法:

  對於32位Windows: 把 ComDlg32.ocx 拷貝到 C:\windows\system32 目錄下;

對於64位Windows: 把 ComDlg32.ocx 拷貝到 C:\windows\sysWOW64 目錄下;

  使用管理員身份,執行  regsvr32 C:\windows\system32\ComDlg32.ocx

2、HTML中沒有按微軟的要求編寫ActiveX 的引用宣告

   如果缺少以下程式碼,也會出現之上的問題

  <object classid="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
         <param name="LPKPath" value="comdlg.lpk">
   </object>

解決方法:加入相應的宣告

3、因為安全原因,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