转自: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了。