почему проверка, если (document.addEventListener) возвращает false

На каком основании чек if (document.addEventListener) возвращает false? Есть ли способ изменить это?


person Miroo    schedule 11.10.2010    source источник
comment
Если вы используете Internet Explorer, он вернет false, потому что у него есть собственный метод.   -  person Alex W    schedule 08.01.2013


Ответы (3)


if (document.addEventListener) оценивается как false, если в document нет метода addEventListener. Эта проверка обычно выполняется, чтобы увидеть, можно ли использовать этот метод для присоединения события к элементу DOM (работает в большинстве браузеров, кроме IE).

можно ли это изменить?
Я не совсем понимаю этот вопрос. Возможно, вы хотите что-то вроде document.attachEvent('onload', callback); для IE. Вы не можете добавить метод addEventListener в документ (ну, может быть, вы и можете, но это не имеет смысла).

Документация для addEventListener

person Nikita Rybak    schedule 11.10.2010
comment
я имею в виду, что я могу сделать, чтобы добавить этот метод в документ? - person Miroo; 11.10.2010
comment
@Miroo Нет, но вы можете использовать способ обработки событий, специфичный для IE. (например, «загрузить» в моем примере) - person Nikita Rybak; 11.10.2010
comment
и у меня работает в IE9, но в другом приложении под framework 4 - person Miroo; 11.10.2010
comment
к сожалению: я добавляю новую функцию для IE9, которая позволяет кнопкам в thumbBar выполнять некоторые функции JS, поэтому я должен прикрепить это событие 'msthumbnailclick' - person Miroo; 11.10.2010
comment
@Miroo И ни один из двух представленных здесь способов присоединения обработчиков не работает? - person Nikita Rybak; 11.10.2010

Если этот фрагмент кода возвращает false, это означает, что свойство метода addEventListener не поддерживается браузером. Это случай для Internet Explorer, где вместо него используется attachEvent:

if (document.addEventListener){  
  document.addEventListener(...);
} else if (document.attachEvent){  
  document.attachEvent(...);  
}
person Romain Linsolas    schedule 11.10.2010
comment
Я пытаюсь использовать это, чтобы добавить thumbBarButtons в IE9, и я пробовал прикрепить событие, и оно не сработало: S, и во всех примерах кода не упоминалось, что мы можем использовать его для присоединения события «msthumbnailclick». - person Miroo; 11.10.2010
comment
IE9 поддерживает addEventListener - person kennebec; 11.10.2010

Он возвращает ложное значение (хотя на самом деле не false), если оно не определено.

Это стандартный тест функции (объекта AKA).

Вы можете изменить его, внедрив свою собственную версию. Чаще всего вы будете использовать это в функции-оболочке с } else {, имеющей специфичную для IE обработку.

person Quentin    schedule 11.10.2010