Opera и document.all
«Опера» в одно время пыталась притворяться Internet Explorer’ом — копировала его
var isIE = document.all && self.operaВпрочем, на Западе «Опера» не популярна, поэтому «Оперу» не исключают и считают её разновидностью IE.
Так вот, в последние годы «Опера» пытается открестится от своего «иешного» прошлого, например,
В новых «Операх» конструкция alert(document.all ? 1 : 0) выдаст «0», тогда как alert(document.all) — «[object HTMLCollection]». Сделано понятно для чего: обратная совместимость не ломается, но проверка «не IE ли» теперь уже выдаёт false.
Комментарии 11
не опера первая начала
firefox:
false
true
тогда ещё был небольшой шум о том, как пришлось покорёжить код, чтобы объект all приводился к false
Ого
Называлось это там «experimenting with document.all cloaking».
Комментарий для arty.name:
firebug-консоли:
firefox, набираю в
«undefined»
«undefined»
false
Что я делаю не так?
А то, что написано в головном посте — в этом ВСЯ Опера. Вот именно за такие хохмочки её всё прогрессивное человечество и ненавидит.
отдельное спасибо за флейм и отнесение меня к ретроградам ; )
впрочем, если «прогрессивное человечество» обижено на оперу за то, что она сменила юзерагент на человеческий и повторила хитрость разработчиков мозиллы (только это и написано в головном посте), то бог с ним. Видимо, меня
Говорят, есть множество примеров обратной несовместимости. Достаточно сложно уловимых и совершенно недокументированных. За это «Оперу» не любят.
Я же «Оперу» люблю за пользовательские качества и именно поэтому использую. Мне, как пользователю браузера, всё равно какие там у всех технические трудности с ним.
Проверяю _на этой странице_ (Quirks mode): 'all' in document == true
Проверяю на странице http://www.livejournal.com/ (Standards compliance mode): 'all' in document == false
Вот и ответ… Но оперу мы «любим» не только за это:)