Справочная информация
В настоящее время существует ошибка в IE9, когда он считает, что свойство NodeFilter
метода createTreeWalker
является функцией обратного вызова вместо объекта, содержащего функцию обратного вызова.
При таком вызове:
document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT, filter, false);
filter
определяется как «объект, содержащий метод acceptNode
», в Webkit и Gecko;однако в IE9 вообще нет упоминания о acceptNode - он ожидает «метод обратного вызова» без переноса этого объекта.
Актуальный вопрос
Итак, чтолучший способ обойти эту проблему без явного определения браузера ?В некоторых случаях мне нужно filter
, чтобы быть методом, а в других мне нужно, чтобы это был объект, содержащий метод.Есть ли чистый способ сделать это?Все эти браузеры утверждают, что поддерживают DOM 2.0, поэтому я не могу проверить это ...
Документы - подтверждение ошибки
Вот сравнение документациидля каждого:
- W3C Spec
- Gecko
- Webkit
- Microsoft («NodeFilter - функция обратного вызова ...» - НЕПРАВИЛЬНО)