IE腳本失效解決辦法[轉]
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