Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: Общие вопросы > Как определить браузер у клиента? |
Автор: Aliance 29.6.2005, 17:17 | ||
Решил написать свой сниффер, чтобы было удобство в кодах далее. В общем столкнулся с такой проблемой: Не могу отличить Mozilla от Netscape =\ И еще, дайте совет, что лучше: проверять браузер только по свойству и userAgent или по всем-всем обособленным свойствам. Т.е. так:
или же кроме document.layers, скажем, писать все-все свойства только NN? Кстати, не нужно ругаться на то, что стал по userAgent проверять. Это намеренно. |
Автор: Sardar 29.6.2005, 17:40 | ||
По идее это NN4, так как Gecko document.layers не поддерживает. Другой вопрос, зачем определять браузер? Определяй есть ли нужная тебе фича, если нет, то догружай код. Добавлено @ 17:41 Елки, ты уже свой пост подредактировал, но всё равно на userAgent ругаться буду ![]() |
Автор: Black 29.6.2005, 19:29 | ||
Вот, кой-чего написал:
Будут предложения по усовершенствованию??? |
Автор: Aliance 30.6.2005, 14:31 | ||||
Это да. Не спорю. Я написал первое что в голову пришло. Естественно, так не будет ![]() Тут важен сам алгоритм.
В том-то и дело, что я пишу снифер, а не просто определяю ИЕ это или НН. Мне нужно наибольшая точность. Но не могу ее обеспечить путем научного тыка, т.к. дома стоят следующие браузеры:
То, что ты написал - совсем не то. Кроме того, неполноценно. И еще, если можно, не нужно писать готовый код, мне нужен совет по алгоритму ![]() |
Автор: Black 30.6.2005, 19:30 | ||
Aliance единственное что приходит на ум, так это определять браузер по поддерживаемым свойствам. User-agent не катит, его можно поменять. Вот только бы знать какие свойства появились в определенной версии определенного браузера. Хотя сначала надо по какому-то уникальному свойству для браузера выяснить что этот браузер имеет такое название, а затем уже сделать для него действия для определения его версии. 1) выясняем название 2) выясняем версию Типа так:
Я бы так делал ![]() Хотя сниффер меня как-то не очень интересует, зачем он нужен??? Даже тот код который я привел правильно определить браузер в 99% случаев, разве только версию не определяет, но я бы ее из user-agenta выдрал, все-таки редко люди меняют user-agent. |
Автор: Aliance 1.7.2005, 13:23 | ||||||
Это не такое простое дело как кажется. Нужно сперва точно определять браузеры. Со 100% шансом. Версии нетрогать! Итак, известные мне браузеры, кто знает еще - пополняем список:
Самое легкое - определить Оперу. Но я это могу сказать только для Оперы 7 с уверенностью. Нужно знать как минимум для 8ой и 6ой. У кого есть - протестите:
Все нужно определять в циклах if, иначе из-за Оперы все будет глючить. Первой ее определяем, т.е. так:
Далее ИЕ... это все получилось. НЕ получилось одно: Как отличить ФФ, Мозилла и НН друг от друга? Добавлено @ 13:25 Про user-agent говорить ничего не нужно! Вообще! Это намерено! |
Автор: Black 1.7.2005, 15:13 | ||||
Aliance
Opera 8 дает YES, короче работает в восьмерке данный код.
наверное, это практически невозможно, только user-agent Хотя, пользователи этих браузеров, как раз и меняют эти юзер-агенты чаще, чем пользователи других смотрелок. Только зачем их отличать они же Mozilla - одно и тоже, skin'ы только разные ![]() |
Автор: Aliance 1.7.2005, 19:29 | ||||
Ну так поидеи и должно быть, раз в 7ой работает. Меня интересует на самом делел намного больше 6ой. Но все же спасибо.
Этого было бы вполне достаточно. Я никогда в глаза не видел Лисы, так что вообще про нее ничего не знаю. Так а как отличить НН от Мозиллы? Они же по разному поддерживают W3C DOM. |
Автор: Zaman 1.7.2005, 19:36 |
http://www.kruglov.ru/articles/crossbrowserdhtml/ вот здесь было для определения Оперы |
Автор: Aliance 1.7.2005, 19:39 | ||
То что там написано - это примитивно. Это не снифер! Сколько повторять. Вот, тут нормально: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
|
Автор: Black 1.7.2005, 21:11 |
Aliance в этом коде что ты привел браузеры по user-agent'y определяются. Жаль что не по поддерживаемым свойсвам, а то бы много интересного узнали ![]() |
Автор: Sardar 1.7.2005, 23:34 | ||
Нет, оба поставленны на одном движке, разница в примочках юзера, основа: DOM, рендеринг, JS, плагиновая подсистема и т.п. едино. Мы говорим о Нетскейпе 7+ ![]() |
Автор: Aliance 2.7.2005, 14:03 |
Sardar NN 5 и 6 списываем со считов? Жаль... А ИЕ 5 и 5.5. тогда тоже? Я же знаю (знал), что Мозилла более твердо соблюдает стандарты, а отличие от НН. Или я не прав? И что такое Сафари - это браузер или ОС? |
Автор: Black 2.7.2005, 14:15 | ||
Aliance Сафари - это браузер для компьютеров Mac (короче для операционой системы компьютеров Mac). Еще под маки есть IE, только он там вообще глюченный какой-то. Наверное, среди нас мало человек, которые видели эти браузеры в глаза. Я лично не видел и не увижу ![]() ИМХО NN уже умер, последняя восьмая версия это гибрид IE и FireFox со своим дизайном и дополнительными фишками. Т.е. этот браузер уже полностью работает на движке IE and Gecko. Тех, кто пользуется NN я никогда не видел, и, надеюсь, не увижу.
Ими люди пользуются, поэтому их списывать еще нельзя. |
Автор: Aliance 2.7.2005, 14:23 |
Вот тут и проблема, ИЕ 5 не поддерживает множество вещей, реально нужных... Итак, через 2-3 дня выложу, что получилось. |
Автор: Sardar 3.7.2005, 19:01 | ||||
Я бы списал ![]()
Не совсем, ИЕ 5.5 ещё нормальный, но ИЕ 5.0 это убогая вещь... |
Автор: Иль 5.7.2005, 15:06 |
Может тебе самому покапаться. Отрисуй в каждом браузере каждой версии распечатку объектов window и document, просмотри свойства и интересные вложенные в них объекты, посмотри также в каком браузере какие свойства не имплементированы, но заложены (исп исключения) и тд. Это труд не имеющий конечной точки |
Автор: Aliance 5.7.2005, 15:24 | ||
JavaScript 1.5 - этим все сказано... Это было бы просто - но у меня ограниченное кол-во браузеров. И я хочу проверку делать и по user-agent'y |
Автор: Иль 5.7.2005, 16:22 | ||
Кстати, тоже показатель - версия JS. Aliance, мне кажется под это дело не стыдно (постоянно дополняемый и обновляемый) интернет-проект создать, но всетаки это работа, работа, работа. |
Автор: Sardar 6.7.2005, 13:38 | ||
Браузеры столь интенсивно не развиваються, имею в виду не совместимости ![]() |
Автор: Иль 8.7.2005, 07:58 |
А вот не согласная я ![]() |
Автор: Aliance 8.7.2005, 09:41 |
Модератор: Давайте вернёмся к теме обсуждения. |
Автор: Aliance 16.8.2005, 14:06 | ||
А вот он мой сниффер:
|
Автор: Sardar 16.8.2005, 14:20 | ||
Проверка по navigator.appName - не всегда точна, Опера например может прикидываьться кем угодно. К тому же ты не учёл Safari - мощный маковый браузер, и Konkuerror браузер на движке KHTML. На сам браузер пофигу, нужно определять движёк, тогда их:
Различии движка определяют поведение. Также важно знать есть ли XML поддержка, XMLHttpRequest, DOM2, DOM2 Event, CSS2, CSS3 и т.д. Это требуемая инфа, appName - это по сути ничего... Я не о точности, я о смысле. Зачем такая проверка? мне нужен XMLHttpRequest, XSLT трансформации на клиенте, CSS3(opacity) стили. Не возможно узнать эту инфу из твоего кода. Круче если бы ты сделал обьект browser, например:
|
Автор: Aliance 16.8.2005, 14:25 |
Теперь прочти почти каждый мой пост, увидишь там название «снифер». Теперь определения снифера: проверка браузера через свойства navigator`а. Поэтому больше не нужно говорить мне то, что я сам всегда говорю в иных ситуациях. Я пишу именно такую проверку со всеми вытекающими последствиями. Мне бы узнать, как Сафари отличить, ибо нет его у меня. |
Автор: Sardar 16.8.2005, 14:31 |
Xм... я говорил о смысле, ты о своём "сниффере", а народ о поставленной задаче... ![]() Если народу функций твоего "сниффера" достаточно, то вопросов нет ![]() |
Автор: o.s.a. 16.8.2005, 14:32 | ||
В твоем снифере FF выдает ошибку:
|
Автор: Aliance 16.8.2005, 14:34 | ||
Sardar Я пишу его для своих целей, я не могу каждому угодить. Кому-то понравился - бери. Но изначально для себя, мне он пригодится, думаю :-) Добавлено @ 14:35 Сорри, дал не верный код. Вот исправленная версия:
|
Автор: o.s.a. 16.8.2005, 14:49 | ||||||
Результаты тестироавния: Mozilla Firefox 1.0.6
IE 6.0
Opera 8.01
|
Автор: Aliance 16.8.2005, 15:02 |
Все верно, за исключением версии. Я не доделал еще =) |
Автор: o.s.a. 16.8.2005, 15:30 |
А при чем здесь Mozilla Firefox 1.0.6 и Netscape Navigator ? |
Автор: Aliance 16.8.2005, 15:41 |
Прочти http://forum.vingrad.ru/index.php?showtopic=57139&view=findpost&p=456878 |