1. JavaScript / Говнокод #11452

    +168

    1. 1
    2. 2
    3. 3
    4. 4
    var IE = '\v'=='v';
    if(IE) {
    // тут пишем обработчик для IE броузера
    }

    Самый короткий способ определения браузера IE (влючая IE.8)

    Запостил: Hits, 20 Июля 2012

    Комментарии (30) RSS

    • IE9 тоже true выдал
      Ответить
      • Я тоже так всегда проверял, если чё. И если б они пофиксили, то новый браузер получился несовместимым с моим кодом.
        Потому теперь оно просто стало стандартом - типа так IE и должен так реагировать.
        Ответить
        • Хех... все тестят версии браузеров всякой хуйней, которую не умеет или неправильно умеет IE... а потом этот самый IE никогда уже не сможет научиться делать ее правильно, потому что он вдруг станет несовместимым с кучами говнокода...

          Вот к чему приводит то, что вовремя не запилили пару вменяемых свойств, поддерживаемых всеми браузерами, по которым можно было бы узнать браузер и его версию...
          Ответить
          • >не запилили пару вменяемых свойств, поддерживаемых всеми браузерами
            Оксюморон же.
            IE как раз бы эти свойства и не поддерживал!
            Ответить
          • И вообще это наглядный пример мелкософтизма - баг, который долго не фиксят у них автоматом становится фичей.
            Ответить
            • А что поделать - везде уже задокументировано и используется. Стандарт де-факто.
              Ответить
          • Я просто оставлю это здесь.

            Когда Internet Explorer стал доминирующим браузером, такие конкуренты как Firefox, Safari и Opera встроили системы, позволяющие пользователю выбрать ложное значение User-Agent, такое же, что и у свежих версий Explorer. Некоторые из них (Firefox и Safari) копировали значение User-Agent полностью, другие (Opera) копировали значение User-Agent, добавляя истинное имя браузера в конце, что позже привело к тому, что строка содержит три имени и версии: первое зовётся как «Mozilla» (то есть Netscape Navigator); далее «MSIE» (Internet Explorer); и последнее, действительный браузер, такой как «Opera».

            Источник: http://ru.wikipedia.org/wiki/User_Agent

            Вот так из-за стараний говновебдизайнеров и авторов браузеров, то самое свойство, позволяющее распознать браузер, превратилось в неудобоваримую хуиту...
            Ответить
            • Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.22+ (KHTML, like Gecko) Chromium/17.0.963.56 Chrome/17.0.963.56 Safari/535.22+ Epiphany/3.4.2
              Ответить
            • А что первоистоком проблем была скорее монополия мс и "ломание" стандартов - это не важно?
              Ответить
              • Первоисточником проблемы была монополия Netscape Navigator.
                Ответить
                • какой проблемы?
                  Ответить
                  • думаю, то, что NN долгое время оставался консервативным, в то время, когда IE (версии 5) уже позволял использовать DHTML в какой-то степени.
                    Естественно, это было расширение оборзевателя, W3C молчал и упрямо отказывался вводить стандарты.
                    Это был праздник, когда много позже, появилась TR DOM, а потом сразу DOM2 - ура, часики на хомяпагах стали работать не только в IE
                    Ответить
                    • Вы плохо знаете историю браузеров и историю стандартов. На тот момент, когда у НН была монополия, это была не проблема, а счастье, по сравнению с ИЕ.
                      Ответить
                      • что вы, я был непосредственным участником тех событий
                        Ответить
                        • А Брежнего живого не видел? А не пиздишь ли ты часом?
                          Ответить
                          • > Брежнего
                            Кто такой Брежний?
                            Ответить
                            • Леоний Ильий
                              его еще в гроб на живот положили
                              Ответить
                              • Медали перевешивают?
                                Ответить
                                • эх, молодёжь

                                  Перед смертью собрал вокруг себя соратников и говорит:
                                  - Как хоронить будете, меня в гроб на живот положите.
                                  - Зачем, Леонид Ильич?
                                  - Придут времена, когда вы меня в жопу целовать будете, так чтоб лишний раз не переворачивали.
                                  Ответить
                                  • Ну так не всё же классику вспоминать, надо иногда поптеросянить.
                                    Ответить
                        • в качестве 3,14159здобола?
                          Ответить
    • А в чём соль и почему так?
      Ответить
      • \v это vertical tab.

        Во второй редакции ECMA (1998й год) его не было, в третьей (1999 год) появилось. Так что майкрософт как всегда слоупочит по 10+ лет...
        Ответить
        • и все равно он неправ. пусть он не понимает \v, но должен тогда принять как \\v, но никак не просто v
          Ответить
          • В стандарте написано вот так:
            The CV of NonEscapeCharacter :: SourceCharacter but not one of EscapeCharacter or LineTerminator is the
            SourceCharacter character itself.


            И, если я правильно понял эту строчку, то неизвестные \буквы должны превращаться в просто буквы, а не оставаться со слешем. Тест в js-консольке фаерфокса подтверждает это предположение...
            Ответить
    • var ie_lt_9 = -[1,];
      Ответить
    • История вопроса:
      http://studioad.ru/blog/2010-01-08-103
      Ответить
    • Есть еще такой интересный момент: вертикальные табы не обрабатываются как такие в JSON. То ли по этой же причине, то ли по какой другой, но это так же делает JSON не полностью совместимым с ECMAScript.
      Ответить
    • Оппа, и тут мой -[1,] проскочил =)
      Ответить

    Добавить комментарий