Jump to content
  • 0

Простой вопрос: Как узнать какой браузер юзает юзверь?


Matoka Kusanage
 Share

Question

Recommended Posts

  • 0

Нужно узнать какой браузер использует юзер с помощью ява скрипт

Заранее спасибо

Простой вопрос - простой ответ:

	var brouse = '';
if(navigator.userAgent.indexOf('Firefox',0)!= -1){
brouse = 'Firefox';
}
if(navigator.userAgent.indexOf('Opera',0)!= -1){
brouse = 'Opera';
}
if(navigator.userAgent.indexOf('MSIE',0)!= -1){
brouse = 'Internet Explorer';
}
if(navigator.userAgent.indexOf('Chrome',0)!= -1){
brouse = 'Chrome';
}
if(navigator.userAgent.indexOf('Safari',0)!= -1){
if(navigator.userAgent.indexOf('Chrome',0)== -1){
brouse = 'Safari';
}
}

Link to comment
Share on other sites

  • 0

Ага! Спасибо!!!!!!

А, скажите пожалуйста, мне просто любопытно очень, а зачем там в каждой скобочке после запятой нолик стоит????

И вообще, если Вам не очень трудно объясните вообще, что здесь и почему. вот хотя бы на примере этого кусманчика

if(navigator.userAgent.indexOf('MSIE',0)!= -1){

brouse = 'Internet Explorer';

}

Edited by Matoka Kusanage
Link to comment
Share on other sites

  • 0

Ага! Спасибо!!!!!!

А, скажите пожалуйста, мне просто любопытно очень, а зачем там в каждой скобочке после запятой нолик стоит????

И вообще, если Вам не очень трудно объясните вообще, что здесь и почему. вот хотя бы на примере этого кусманчика

if(navigator.userAgent.indexOf('MSIE',0)!= -1){

brouse = 'Internet Explorer';

}

.indexOf - метод принимает строку и позицию, с которой начинает поиск.

navigator.userAgent.indexOf('MSIE',0)!= -1 - Выражение означает: Если в строке (искомой) подстрока с MSIE НЕ равна -1. Т.е. если она ЕСТЬ. То выполняем действия. Дело в том, что метод .indexOf при плохой игре возвращает -1, что означает, что подстрока в строке не найдена.

Link to comment
Share on other sites

  • 0

Я думала я умней. нефига не ясно. ладно. тогда немного другой вопрос.

Я слепила вот такую штуку

if(navigator.userAgent.indexOf('MSIE',0)!= -1)

{document.write('<center>Вам лучше использовать другой браузер, так как этот отобразит данный сайт некорректно.<br><br>

Но вы можете продолжить и так.<br>

<a href="main.html">Продолжить!</a></center>')}

else{location.replace("main.html")}

Я хотела добиться следущего эффекта: если у юзера ИЕ, то выдать ему предупреждение и ссылку, а если не ие сразу открыть main.html

Когда я страничку с этим кодом открыла ИЕ, сообщение не вывелось, а когда открыла Оперой, то не появилась main.html

Вывод я сделала неправильно абсолютно всё. А как тогда надо?

Edited by Matoka Kusanage
Link to comment
Share on other sites

  • 0

Ага! Спасибо!!!!!!

А, скажите пожалуйста, мне просто любопытно очень, а зачем там в каждой скобочке после запятой нолик стоит????

И вообще, если Вам не очень трудно объясните вообще, что здесь и почему. вот хотя бы на примере этого кусманчика

if(navigator.userAgent.indexOf('MSIE',0)!= -1){

brouse = 'Internet Explorer';

}

.indexOf - метод принимает строку и позицию, с которой начинает поиск.

navigator.userAgent.indexOf('MSIE',0)!= -1 - Выражение означает: Если в строке (искомой) подстрока с MSIE НЕ равна -1. Т.е. если она ЕСТЬ. То выполняем действия. Дело в том, что метод .indexOf при плохой игре возвращает -1, что означает, что подстрока в строке не найдена.

Нолик вообще не обязателен, по умолчанию поиск начинается с первого символа.

Link to comment
Share on other sites

  • 0

Ага! Спасибо!!!!!!

А, скажите пожалуйста, мне просто любопытно очень, а зачем там в каждой скобочке после запятой нолик стоит????

И вообще, если Вам не очень трудно объясните вообще, что здесь и почему. вот хотя бы на примере этого кусманчика

if(navigator.userAgent.indexOf('MSIE',0)!= -1){

brouse = 'Internet Explorer';

}

.indexOf - метод принимает строку и позицию, с которой начинает поиск.

navigator.userAgent.indexOf('MSIE',0)!= -1 - Выражение означает: Если в строке (искомой) подстрока с MSIE НЕ равна -1. Т.е. если она ЕСТЬ. То выполняем действия. Дело в том, что метод .indexOf при плохой игре возвращает -1, что означает, что подстрока в строке не найдена.

Нолик вообще не обязателен, по умолчанию поиск начинается с первого символа.

Да, это ясно. Но вроде рекомендуется ставить число всё же.

Link to comment
Share on other sites

  • 0

Не знаю конечно кто тебя этому учил, но я первый раз вижу, чтоб без надобности ставили ночь :) Если есть не обязательный параметр и значение по умолчанию то на то оно и значение по умолчанию.

Link to comment
Share on other sites

  • 0

Не знаю конечно кто тебя этому учил, но я первый раз вижу, чтоб без надобности ставили ночь :) Если есть не обязательный параметр и значение по умолчанию то на то оно и значение по умолчанию.

Да? А вот, например, в parseInt(str,10) по твоему тоже второе значение не нужно?

ну так и как всё же сделать, то что я хотела?

Через условные комменты.

Link to comment
Share on other sites

  • 0

Не знаю конечно кто тебя этому учил, но я первый раз вижу, чтоб без надобности ставили ночь :) Если есть не обязательный параметр и значение по умолчанию то на то оно и значение по умолчанию.

Да? А вот, например, в parseInt(str,10) по твоему тоже второе значение не нужно?

В ES5 не нужно. А в ES3 да, конечно, так как по умолчанию он может строку не правильно понять и преобразовать в восьмизначное число. Например если написать 08.

П.С. Ихмо конечно не критично тоже если ты уверен, что такая строка не попадётся.

Link to comment
Share on other sites

  • 0

Блин, народ, я не такая умная как вы!!! Подробнее пожалуйста!!

Ладно, ладно, только сковородкой не бей :)

http://www.google.ru/#hl=ru&newwindow=1&sa=X&ei=fZxXTriOCcv2sgaEmMSMCw&sqi=2&ved=0CBcQvwUoAQ&q=ie+%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5+%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B8&spell=1&bav=on.2,or.r_gc.r_pw.&fp=5d308508020c46ce&biw=1366&bih=665 - любую ссылку тыкаешь и читаешь.

Link to comment
Share on other sites

  • 0

Не знаю конечно кто тебя этому учил, но я первый раз вижу, чтоб без надобности ставили ночь :) Если есть не обязательный параметр и значение по умолчанию то на то оно и значение по умолчанию.

Да? А вот, например, в parseInt(str,10) по твоему тоже второе значение не нужно?

В ES5 не нужно. А в ES3 да, конечно, так как по умолчанию он может строку не правильно понять и преобразовать в восьмизначное число. Например если написать 08.

А вот как раз таки и наоборот. в ES3 необязательно было, но в ES5 строгом нужно писать.

Link to comment
Share on other sites

  • 0

Не знаю конечно кто тебя этому учил, но я первый раз вижу, чтоб без надобности ставили ночь :) Если есть не обязательный параметр и значение по умолчанию то на то оно и значение по умолчанию.

Да? А вот, например, в parseInt(str,10) по твоему тоже второе значение не нужно?

В ES5 не нужно. А в ES3 да, конечно, так как по умолчанию он может строку не правильно понять и преобразовать в восьмизначное число. Например если написать 08.

А вот как раз таки и наоборот. в ES3 необязательно было, но в ES5 строгом нужно писать.

Враньё. В ES5 по умолчанию преобразование в десятичное число.

The same in the ES5 specification — octal extension may be used only for backward compatibilities and only in non-strict mode. It’s also defined in the Annex B of ES5. In strict mode, as we said, octal extension is forbidden:
In ES5, handling of octal case in parseInt algorithm has been removed, so now we can use it without specifying a radix in this case. Notice again, that new parseInt algorithm is applied regardless strict mode and regardless numeric grammar extension:

// ES5, no matter, strict
// or non-strict mode

parseInt("08"); // 8

http://dmitrysoshnikov.com/ecmascript/es5-chapter-2-strict-mode/

П.С. Да и в ES3 не обязательно, просто для предотвращения нелепых случайностей рекомендуется. Так при определённых условиях синтаксиса строка парсится как восьмеричное, а не десятичное число. В то время как например в indexOf таких проблем с неточностью нет и можно смело опускать второй параметр.

Link to comment
Share on other sites

  • 0

О народ! Поздравьте. Я Сделала две тупейших ошибки:

Во-первых, в условии того скрипта, который мы изначально сочинили, стоит только одно равно, а не два, как надо

Во-вторых, я налажала по полной, набрав сообщение в несколько строчек, в итоге команда document.write оказалась разбитой на несколько строк

В ИЕ уже выдаётся сообщение, ща проверю перекидывает ли по ссылке в опере.

Link to comment
Share on other sites

  • 0

О народ! Поздравьте. Я Сделала две тупейших ошибки:

Во-первых, в условии того скрипта, который мы изначально сочинили, стоит только одно равно, а не два, как надо

Во-вторых, я налажала по полной, набрав сообщение в несколько строчек, в итоге команда document.write оказалась разбитой на несколько строк

В ИЕ уже выдаётся сообщение, ща проверю перекидывает ли по ссылке в опере.

Поздравляю, но с комментариями действительно проще. Да и если к вам кто то зайдёт через ИЕ10 всё равно получится так что вы его просите обновится, не хорошо :)

Link to comment
Share on other sites

  • 0

Ура!!!! всё пашет!!!! Вот если кому скрипт понадобится:

if (navigator.userAgent.indexOf('MSIE',0)!== -1)

{document.write('то,_что_нужно_вывести_(обязательно_в_одну_строчку!!!)')}

else{location.replace('страница_куда_надо_перейти.html')}

Link to comment
Share on other sites

  • 0

1)А почему мне должно быть стыдно использовать <center>?

2)Я об этом браузере слышала два раза за всю жизнь, и не видела ни разу, чтобы кто-то из простых смертных его юзал.

3)Ну вообще если сделать всё правильно, в идеале, действительно надо будет сделать, чтобы версию старше 6 ИЕ тоже пропускал. Просто ИЕ 6 и ниже не читают position:fixed. Начиная с семёрки, по идее должно работать, кому коды давала, говорят пашет. у меня стоит 8, и нифига не пашет. В правильности написания css уверена.

Обещаю разобраться с условными коментариями. Спасибо за совет.

Edited by Matoka Kusanage
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy