轉自:http://wapapp.baidu.com/auoong/item/538790fcbe87c834d7ff8cde
首先這個問題的前提是已經排除了常見的這個問題。下面說一種今天我碰到的一種情況。
瀏覽器報的錯誤:
1、在xp/win7系統下安裝的是ie8的報的錯誤是:對象不支持此屬性與方法。
2、在win8下報的錯誤是:對象不支持“toLowerCase”屬性或方法,即使是調整成ie8模式也是這個錯誤。
出錯的代碼段為jquery的源代碼,如下:
var b=a.nodeName&&p.noData[a.nodeName.toLowerCase()];
進一步確認問題,將a.nodeName添加到監視器,如果你看到它的類型為DispHTMLInputElement,那么你的這個錯誤與我碰到的應該就是一樣的了。
解決辦法:
搜索頁面中是否有叫nodeName的元素,如果有改名之,問題就出在這個叫nodeName的元素,因為在代碼中這個a,在ie開發者工具中我們可以通過a === window來測試,發現這個a就是window,因此a.nodeName在ie下就會指向頁面中id=nodeName的元素,而此時我們頁面中正好有這個元素。這樣一來也就可以說明了為什么會報對象不支持toLowerCase屬性或方法了。
讀者:
個人測試a.nodeName時一直報道a未定義,當時報錯位置和內容是一樣的,所以把該頁面的nodeName改了個名字就ok了。