IE 浏览器的脚本失效是个源远流长的问题了,有时撞上了那也只能归结于缘分,完全没得解释。这次本人就是中大彩的缘分,被小小地撞了一下腰。
当然脚本失效也有轻重,有时是页面全部烂晒,图片文字全部显示错位,惨不忍睹,其实坏的这么彻底反倒容易发现问题,也容易解决。最怕就是那种大问题没有小问题不断的情况,像我,基本的脚本效果都支持,就是用到调用 window.opener 的函数方法时报错:类不能支持 Automation 操作。这么具体的出错信息在 Baidu/Google 也找不到什么有用信息,可谓万念俱灰。
严格来说已经很难说是 IE 的错,但按照经验通常你对 IE 进行折腾,例如 IE6 升到 IE7/IE8,或重装,不同程度的第三方软件的修复,一般都不能解决问题。如果一定需要一个理由,应该是在某年某日中了某个木马升级了某个补丁或者卸载某个软件,而导致某个组件某个动态扩展被反注册掉而无法支持某种效果……
说到这里,要说说 regsvr32 命令,是一个注册 DLL 动态扩展库的命令行工具。方法:在“运行”里面输入regsvr32 dllname,回车即可。使用上有几个参数:
/u——反注册控件
/s——不管注册成功与否,均不显示提示框
/c——控制台输出
/i——跳过控件的选项进行安装(与注册不同)
/n——不注册控件,此选项必须与/i选项一起使用
从网上摘录了几个解决 IE Javascript 脚本失效的办法,逐步执行,前面不行了才执行后面的,机器无须重启的。
最简单的级别,注册两个脚本库(如上文页面完全烂晒的情况):
regsvr32 jscript.dll
regsvr32 vbscript.dll
如果还不行,再注册多几个(包括连接无法打开新窗口等):
regsvr32 Shdocvw.dll
regsvr32 Oleaut32.dll
regsvr32 Actxprxy.dll
regsvr32 Mshtml.dll
regsvr32 Urlmon.dll
regsvr32 browseui.dll
如果还不行,把以下代码复制到 CMD 命令行里面粘贴执行:
rundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%\System32\dacui.dll
rundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%\Catroot\icatalog.mdb
regsvr32 /s comcat.dll
regsvr32 /s asctrls.ocx
regsvr32 /s oleaut32.dll
regsvr32 /s shdocvw.dll /i
regsvr32 /s shdocvw.dll
regsvr32 /s browseui.dll
regsvr32 /s browseui.dll /i
regsvr32 /s msrating.dll
regsvr32 /s mlang.dll
regsvr32 /s hlink.dll
regsvr32 /s mshtml.dll
regsvr32 /s mshtmled.dll
regsvr32 /s urlmon.dll
regsvr32 /s plugin.ocx
regsvr32 /s sendmail.dll
regsvr32 /s mshtml.dll /i
regsvr32 /s scrobj.dll
regsvr32 /s corpol.dll
regsvr32 /s jscript.dll
regsvr32 /s msxml.dll
regsvr32 /s imgutil.dll
regsvr32 /s cryptext.dll
regsvr32 /s inseng.dll
regsvr32 /s iesetup.dll /i
regsvr32 /s cryptdlg.dll
regsvr32 /s actxprxy.dll
regsvr32 /s dispex.dll
regsvr32 /s occache.dll
regsvr32 /s iepeers.dll
regsvr32 /s urlmon.dll /i
regsvr32 /s cdfview.dll
regsvr32 /s webcheck.dll
regsvr32 /s mobsync.dll
regsvr32 /s pngfilt.dll
regsvr32 /s licmgr10.dll
regsvr32 /s hhctrl.ocx
regsvr32 /s inetcfg.dll