Объект не поддерживает это свойство или метод ошибки JavaScript только в IE6 - PullRequest
2 голосов
/ 30 января 2010

Я искал в интернете и в особенности на этом отличном сайте 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); Все остальные браузеры в порядке, только IE6. Я не автор сценария, просто пытаюсь это исправить. Кто-нибудь может помочь, пожалуйста? Должна быть какая-то проблема с объявлением функции или ...?

Ответы [ 3 ]

1 голос
/ 31 января 2010

Для меня это тоже ошибка в IE7 и IE8.

Он сообщает номер строки ошибки как строку 4 (строка 3 в IE6, но IE6 всегда выключен на одну). Это означает, что ошибка в:

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.

1 голос
/ 30 января 2010

Пример выглядит довольно запутанным, там много кода, который выглядит отвлекающим.

Из того, что я вижу, проблема в этом коде:

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

Здесь вы определяете новую функцию с именем a11y, и внутри определения этой функции вы вызываете метод 'change' для определяемой функции a11y. Я удивлен, что работает в любом браузере.

0 голосов
/ 08 февраля 2010

спасибо за вашу помощь. Как предположил Шон Хоган, проблема была в том, что 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) { }
  }

Еще раз спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...