关于HTML使用ComDlg ActiveX 无法弹出相应对话框的问题1

最近发现,开发的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

 

 

 


测试代码:https://files.cnblogs.com/files/finema/ComDlgTest.rar

posted @ 2017-04-21 08:40  finema  阅读(629)  评论(0编辑  收藏  举报