【问题标题】:Object doesn't support this property or method javascript error in IE6 only对象不支持此属性或方法 仅在 IE6 中出现 javascript 错误
【发布时间】:2010-01-30 18:24:08
【问题描述】:

我已经搜索了互联网和这个很棒的 stackoverflow.com 网站,但我无法自拔。我不是很有经验的程序员,我的一个朋友让我修复仅在 IE6 上的错误。它适用于 FF、IE7/8、Opera。 这是在 IE6 上给出错误消息的代码部分:

(function(d, n, r) {
  var ie, jscript, settings = {};
  function add(element, type, listener) { element.addEventListener(type, listener, false); };
  function remove(element, type, listener) { element.removeEventListener(type, listener, false); };
  var l = {change:[], ready:[], load:[]};
  a11y = function(f) {
    a11y.change(f);
  };
})
(self.document, self.navigator);

错误在第7行:a11y.change(f);其他浏览器都OK,只有IE6。我不是脚本的作者,只是想解决这个问题。有人可以帮忙吗?函数声明一定有问题还是...?

【问题讨论】:

  • 您收到的错误信息是什么?
  • 这里有很多代码似乎与错误无关,并且示例中缺少一些代码。你能提供更多关于这段代码试图做什么的上下文吗?
  • 任何像“a11y”这样的变量名的代码都会让你紧张:-)

标签: javascript object internet-explorer-6


【解决方案1】:

这个例子看起来很混乱,里面有很多看起来让人分心的代码。

据我所知,问题出在这段代码中:

a11y = function(f) {
    a11y.change(f);
};

在这里,您定义了一个名为 a11y 的新函数,并且在该函数的定义中,您正在对正在定义的函数 a11y 调用方法“更改”。我很惊讶它适用于任何浏览器。

【讨论】:

  • 感谢您的 cmets。我决定提供测试页面的 URL。这里是:apbsystems.com/awareness/sco1.html 这里有一个 javascript:apbsystems.com/awareness/base/js/a11y/a11y.js 那里有更多脚本,但我想这是导致问题的脚本。我得到的错误是 IE6 中的“对象不支持此属性或方法”。谢谢你所有的努力。我不确定所有脚本的含义。我花了两天时间试图找出答案。基本上它会打开一个窗口...
【解决方案2】:

对我来说,它也会在 IE7 和 IE8 中引发错误。

它将错误行号报告为第 4 行(IE6 中的第 3 行,但 IE6 始终关闭 1)。 这表明错误在:

function add(element, type, listener) { element.addEventListener(type, listener, false); };  

这并不奇怪,因为 IE 没有实现 addEventListener。 IE 上的等效调用是:

element.attachEvent("on" + type, listener)  

看起来该页面正在使用 jQuery,因此您应该为此使用 jQuery 方法。
而不是调用

add(element, type, listener)  

你可以打电话

$(element).bind(type, listener)

您还需要修复第 5 行中的“删除”功能。

【讨论】:

    【解决方案3】:

    感谢您的所有帮助。正如 Sean Hogan 所建议的,问题在于 IE 没有实现 addEventListener。我在互联网的某个地方找到了类似的修复程序,它对我有用。

      function add(element, type, listener) {
          remove(element, type, listener);
          element.attachEvent("on"+ type, listener);
      };
      function remove(element, type, listener) {
          element.detachEvent("on"+ type, listener);
      };
      settings.jscript = jscript = @_jscript_version;
      settings.ie = ie = parseFloat(n.userAgent.split("MSIE ")[1]);
       if (d && d.execCommand) {
        try { d.execCommand("BackgroundImageCache",false, true); }
        catch (e) { }
      }
    

    再次感谢!

    【讨论】:

      猜你喜欢
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多