最近发现,开发的Web应用在客户的某些IE(8,9,11)中弹出不了Windows的字体对话框。
通过 F12 跟踪,错误代码是“-2146827850”,错误信息是“ 对象不支持ShowFont属性和方法”
问题的原因分析:
应该是IE无法正确载入相应的ActiveX控件引起的。几种情况
1、客户电脑上没有注册好 ComDlg32.ocx
解决方法:
对于32位Windows: 把 ComDlg32.ocx 拷贝到 C:windowssystem32 目录下;
对于64位Windows: 把 ComDlg32.ocx 拷贝到 C:windowssysWOW64 目录下;
使用管理员身份,运行 regsvr32 C:windowssystem32ComDlg32.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_MACHINESOFTWAREMicrosoftInternet ExplorerActiveX 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