Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: alex007 от 31 Июля 2002, 23:50:37

Название: Почему не работет
Отправлено: alex007 от 31 Июля 2002, 23:50:37
Есть скрипт:



Не подскажете ли почему этот скрипт не работает в Опере и в IE5.0? или как его можно исправить чтобы он работал в этих браузерах тоже.

Большое спасибо.
Название: Почему не работет
Отправлено: Макс от 01 Августа 2002, 01:19:32
alex007
Учись свои скрипт отлаживать. alert() будет тебе другом и товарищем в трудную минуту.
выведи alert(type+" "+lang); и посмотри что он напишет.
Вставь alert() между условиями и посмотри какое условие выполнится.

ЗЫ
Сделал бы на серверной стороне и не мучился бы с межброузерной отладкой

ЗЗЫ
Называй темы осмыслено
Название: Почему не работет
Отправлено: GotZfild от 01 Августа 2002, 14:43:36
Цитировать
else if (type=="MSIE 5.0")

IE представляется как Microsoft Internet Explorer
Цитировать
var lang = lang.substr(0,2)

Цитировать
else if (lang == "en-us")

Зачем тебе en-us, еслу у тебя в lang только два символа?
Название: Почему не работет
Отправлено: alex007 от 01 Августа 2002, 21:30:45
Спасибо за ответы.

Цитировать
Сделал бы на серверной стороне и не мучился бы с межброузерной отладкой

А как это дело в CGI/Perlе сделать?
Название: Почему не работет
Отправлено: Макс от 01 Августа 2002, 22:32:52
Вообще-то это в perl-форум
$cgi = new CGI;
$lang = $cgi->http[\'HTTP_ACCEPT_LANGUAGE\'];
ну и дальше через if или switch

если что не так, то NeoNox или Chs меня поправят :)
Название: Почему не работет
Отправлено: Fluke от 02 Августа 2002, 09:13:46
Кусок кода для Opera, MSIE и NN

with (navigator) {
            
if(userAgent.indexOf(\'Opera\')>=0)
{lang = userAgent.substring(userAgent.indexOf("[") + 1, userAgent.indexOf("]"));}
             
else {if(userAgent.indexOf(\'MSIE\')>=0)
{lang = browserLanguage;}
           
else {if(appName.indexOf(\'Netscape\')>=0)
{this.lang = userAgent.substring(userAgent.indexOf("[") + 1, userAgent.indexOf("]"));}}}}


С уважением.
Название: Почему не работет
Отправлено: alex007 от 02 Августа 2002, 21:27:17
Макс, Fluke

Большое спасибо за ответы.
Название: Почему не работет
Отправлено: alex007 от 03 Августа 2002, 21:28:22
Цитировать
Кусок кода для Opera, MSIE и NN

with (navigator) {

if(userAgent.indexOf(\'Opera\')>=0)
{lang = userAgent.substring(userAgent.indexOf("[") + 1, userAgent.indexOf("]"));}

else {if(userAgent.indexOf(\'MSIE\')>=0)
{lang = browserLanguage;}

else {if(appName.indexOf(\'Netscape\')>=0)
{this.lang = userAgent.substring(userAgent.indexOf("[") + 1, userAgent.indexOf("]"));}}}}

Попробывал в Opere и Netscape не работает, а в IE дает ошибку.
Пререправил немного в IE работает, а в Opere и Netscape не работает вот скрипт:



Жду ответов.
С уважением Алекс
Название: Почему не работет
Отправлено: alex007 от 07 Августа 2002, 22:47:48
Жду ответов
Название: Почему не работет
Отправлено: puh от 08 Августа 2002, 10:24:53
else if(userAgent.indexOf(\'MSIE\')>=0)
нет такой конструкции в JavaScript
Название: Почему не работет
Отправлено: Макс от 08 Августа 2002, 16:28:09
puh
Цитировать
else if(userAgent.indexOf(\'MSIE\')>=0)
нету else if ?

alex007
Вот ты за неделю между первым и последним топиком в этой теме как пытался решить свою проблему?

вот это работает в MSIE 5.0, оперы у меня нет, в остальных броузерах он (по твоим словам) работал



Название: Почему не работет
Отправлено: puh от 08 Августа 2002, 16:55:13
Цитировать
нету else if ?

Нету!
Вот спецификация:
http://www.terrorzone.kiev.ua/js.guide/stmtsov.htm#1008319
Зато можно использовать switch Statement
Название: Почему не работет
Отправлено: Макс от 08 Августа 2002, 17:46:36
puh

else if() {
}

это все равно что

else {
   if () {
   }
}

просто в данном для else можно упустить фигурные скобки, так так внутри только один оператор if()
Название: Почему не работет
Отправлено: puh от 08 Августа 2002, 21:58:03
Не знал, спасибо тебе, Макс!