在Internet Explorer 10中,我有以下内容:
/*
* Alias document.getElementById(), to reduce typing, improve
* readability and speed up access to the function.
*/
var getElmById = document.getElementById;
function . . . (ctlID) {
var ctrl = getElmById(ctlID); // <————<<< error raised here
. . .
}
这一直很好,但突然给了我
SCRIPT65535: Invalid calling object
我已确定如果选中Tools > Compatibility View Settings > [_] Display intranet sites in Compatibility View
框,则别名函数运行正常,但如果我清除该框,则会收到错误。
是什么原因? IE正在回应的具体问题是什么?是否已消除了这样的混叠功能? “文档”对象的行为方式是否发生了一些变化?
答案 0 :(得分:2)
答案 1 :(得分:0)
“getElementById()”应该被称为方法而不是函数,即要应用的上下文(文档,或以Javascript术语,“this”值),获得通过解析表达式的左侧(“document。”)。
过去,上下文必须作为函数的自由变量访问,因此他们可能决定清理它们的代码。由于其他一些主流浏览器不支持这种别名,我猜他们认为大多数人都不会介意。