我正在开发一个必须与IE8兼容的ASP.NET应用程序。在所有其他浏览器中它完美地工作,但在IE8中它给我错误
Object doesn't support this property or method
并崩溃。我在互联网上做了一些搜索,发现像这样的问题有解决方案(如this one或this one),但这些解决方案都没有改变我的情况。该错误发生在谷歌地图初始化的initialize
回调方法中(由于错误似乎发生在变量定义行上,因此不应有所不同),代码如下:
function initialize(sender, isFrontPageInitialLoadParam) {
if (isFrontPageInitialLoadParam !== false) {
isFrontPageInitialLoad = true;
mapCompletelyLoaded = false;
} else {
isFrontPageInitialLoad = false;
}
(当然,该功能仍在继续,但此代码中会出现错误。)
此代码的生产(缩小)版本如下:
function initialize(n, t) {
var i, r;
t !== !1 ? (isFrontPageInitialLoad = !0, mapCompletelyLoaded = !1) : isFrontPageInitialLoad = !1,
错误发生在t !== !1
,这相当于if (isFrontPageInitialLoadParam !== false)
。
从其他解决方案到这个错误,似乎错误通常是由于隐式声明的全局变量而发生的,但我没有看到这是我的问题(isFrontPageInitialLoad
和{{1}是在全局范围内声明的变量)。
我是否遗漏了一些明显的东西,或者IE8是不是像往常一样玩得不好?
答案 0 :(得分:0)
所以我在朋友的帮助下找出了这个问题。
这个变量检查似乎没问题,所以我开始在我的代码中将代码放在代码中的不同位置以查看它到底有多远,唉:错误发生在一个完全错误上不同的路线。
看来我剩下了
console.dir("<snip>")
调用JavaScript,看起来IE8不支持console.dir()
调用,但如果开发人员工具处于打开状态,则仍然支持console.log()
调用(感谢@Reinder Wit)。我删除了这一行,它再次起作用。
如果遇到这样的错误,请在代码中的各行输入一些警报,并查看代码在崩溃前的距离。看起来IE8中的JavaScript错误日志记录控制台不知道发生错误的代码的正确部分。