无效的调用对象和兼容性

时间:2015-02-05 18:14:36

标签: javascript internet-explorer-10

在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正在回应的具体问题是什么?是否已消除了这样的混叠功能? “文档”对象的行为方式是否发生了一些变化?

2 个答案:

答案 0 :(得分:2)

我刚刚发布了这个作为答案,但我没有看到它。再试一次......

这个主题有一个很好的答案:

JavaScript function aliasing doesn't seem to work

答案 1 :(得分:0)

“getElementById()”应该被称为方法而不是函数,即要应用的上下文(文档,或以Javascript术语,“this”值),获得通过解析表达式的左侧(“document。”)。

过去,上下文必须作为函数的自由变量访问,因此他们可能决定清理它们的代码。由于其他一些主流浏览器不支持这种别名,我猜他们认为大多数人都不会介意。