尝试访问IEMobile 7.11上的document.documentElement.offsetHeight会引发一个未指定的错误。为什么呢?
我正在努力修复一些意味着在手持设备上运行的Javascript(不是手机,那种送货员使用的)。但是,这些设备有一些不同的操作系统和浏览器版本,因此兼容性是一个问题。
问题代码位于body元素onLoad和onResize事件期间调用的方法中。我能够使用document.documentElement.offsetHeight属性在一台设备上解决问题,但是当我尝试在其他设备上使用它时,它会出错。
现在,我期待必须进行各种古怪的兼容性检查,但这个特殊的错误很有意思,因为我不知道它为什么会发生。以下所有情况都会导致错误:
var str = document.documentElement.offsetHeight
var str = String(document.documentElement.offsetHeight)
alert(document.documentElement.offsetHeight)
因此,似乎只是尝试访问该属性会引发错误。我检查了documentElement对象是否存在,它确实存在,所以它不是在null上调用属性的情况。我认为可能是因为offsetHeight没有被定义,即使它应该只返回null,所以我用以下循环检查了documentElement的属性,以确保:
var str = "";
for (var prop in document.documentElement) {
str += prop + "\n";
}
但是offsetHeight属性肯定在对象上,虽然我不知道它是什么价值。
我尝试捕捉错误,并没有给我任何帮助; error.description和error.message都是空的,所以我查找了错误号(-2147467259),发现它意味着"未指定的错误","您的短信自己的"
就我自己的知识而言,这个错误完全是莫名其妙的。所以我来Stack Overflow寻求智慧。