Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Проблема с определением бровзера (ИЕ7)


Автор: godsgame 11.4.2007, 11:21
Добрый день.

Есть код для проверки бровзера, который функционирует:

Код

function check_brow()
{
    var b = false;
    
    if ( document.all )
    {
        b = true; //IE
    }
    
    if ( window.opera )
    {
        b = false; //opera
    }
    else if ( document.layers )
    {
        b = false; //?
    }
    else if ( window.XMLHttpRequest )
    {
        b = false; //?
    }
    
    return b;
}


как он работает можно проверить тут: http://www.agewar.ru/
Регистрироваться не надо.. просто попробуйте войти (из под мозилы или оперы), введя, что угодно, и увидите сообщение.

Но возникла проблема, мне сказали, что под ИЕ7, он тоже не пускает!

Вопрос: Как исправить данный код, чтобы он не выдавал ошибки под ИЕ7?
И если не сложно, скажите, какая строчка отвечает за определение Мозиллы?

П.С: Сам бы проверил, но у меня нет ИЕ7 и желания его устанавливать.

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

Автор: SelenIT 11.4.2007, 11:35
godsgame, насколько я знаю, window.XMLHttpRequest в IE7 тоже есть. Имхо, эта проверка вообще не нужна - Мозиллообразные отсекутся на этапе проверки document.all, а опера завалится от собственной нескромности при проверке window.opera...

P.S. document.layers - 4-й нетскейп (возможно, 6-й тоже - не уверен). В наши дни, имхо, совершенно не актуально.

Автор: Mymik 11.4.2007, 13:11
поставь еще проверку на строку navigator.userAgent есть ли там MSIE Если есть, то это IE7

Автор: godsgame 11.4.2007, 17:25
мда.. значит моя ф-ция преобразовывается в:

Код

function check_brow()
{
    var b = false;
    
    if ( window.opera )
    {
        b = false; //opera
    }
    else
    {
        b = true; //все остальные: ИЕ, Мозилла..
    }
    
    return b;
}


спасибо за помощь.

Автор: SelenIT 11.4.2007, 17:53
godsgame, так Вам нужно одну Оперу исключить или всё-таки один IE оставить?

Автор: vasac 11.4.2007, 20:37
Цитата

Мозиллообразные отсекутся на этапе проверки document.all

В них же уже реализован этот объект.

Автор: SelenIT 11.4.2007, 20:49
vasac, реализован, но проверка if (document.all) по традиции реагирует как на false. Я сам удивился, когда 12345с мне на это указал...

Автор: Sardar 12.4.2007, 14:53
http://www.quirksmode.org/js/detect.html. Там же описано почему этого делать не нужно. Лучше проверять нужный тебе API и вываливаться только если его нет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)