2013-03-24 4 views
0

Я обновляю свой дизайн сайта, потому что он не работает должным образом в IE10.Обнаружение браузера JavaScript в IE10

Я использовал комбинацию условных комментариев и JavaScript для обработки обнаружения IE-версии, но поскольку IE10 отказался от первого, и я не нашел причины для его игнорирования последнего, я ищу помощь здесь. Я читал эту тему:

Detect IE version (prior to v9) in JavaScript

Но мое знание JavaScript не далеко пшик, так что я не уверен, должен ли я смотреть, чтобы изменить свой код или лома и принять и измените код, указанный в этом URL-адресе (и если да, то как я должен это сделать).

Код настоящее время я использую:

<link rel="stylesheet" type="text/css" href="barebones.css"> 

    <!--[if lte IE 8]> 
    <link rel="stylesheet" type="text/css" href="ie.css"> 
    <![endif]--> 

    <!--[if gt IE 8]> 
    <link rel="stylesheet" type="text/css" href="default.css"> 
    <![endif]--> 

<script type="text/javascript"> 
    //<![CDATA[ 
    var appName = window.navigator.appName; 
if (appName !== "Microsoft Internet Explorer") 
document.write("<link rel=\"stylesheet\" type=\"text\/css\" href=\"default.css\" \/>");//]]> 
</script> 

Если это поможет я могу разместить свой сайт URL, но я не хочу, чтобы люди думали, что я пытаюсь получить больше трафика сайта или что-то.

Я знаю, что код, который я использую в настоящее время, может быть немного усовершенствован, но я предпочел бы заставить все работать до того, как будет весна чистой.

IE10 на нескольких машинах, кажется, полностью игнорирует JavaScript, и я не знаю почему. IE9 отлично справляется с этим.

Любая помощь будет высоко оценена.

+8

Вместо обнаружение браузера, поиск актуальных проблем и запись кросс-браузерного кода. IE10 достаточно стандартен, чтобы соответствовать стандартам, в отличие от IE6-7. –

+0

... и 8 и 9 :-) – Pointy

+0

Я обслуживаю IE 9 и 10 та же таблица стилей, что и другие браузеры. – mikeymike

ответ

0

Недавно я принял решение css browser selector. Это js, который добавляет конкретный класс css к корню документа, поэтому вы можете обрабатывать несоответствия стиля в браузерах внутри вашего css без хаков. Он довольно старый, хотя и не поддерживает IE10, но, как говорят другие, IE10 довольно стандартный. Он обрабатывает IE6, 7 и 8, хотя (и вы, похоже, предпринимаете специальные меры для этих браузеров), поэтому я предполагаю, что это сработает для вас.

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

0

Поскольку IE10 не признает условные комментарии и то, что вам нужно, чтобы обнаружить версию браузера, я реализовал функцию, чтобы сделать это:

function getIEVersion() { 
     if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { 
     /* 
     * sample user-Agent 
     * "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)" 
     */ 
     //test for MSIE x.x; 
     var ieversion = new Number(RegExp.$1); // capture x.x portion and store as a number 
     return ieversion; 
     } 
    return -1; 
    } 

    alert(getIEVersion()); 

возвращает номер версии IE. (Например: 10, 9, 7 ..)

5

Это лучше всего, когда дело с такого рода проблем, чтобы избежать «обнаружения Broswer» и идти с «обнаружения особенностей»

Библиотека как http://modernizr.com/ поможет вам проверить для определенных функций, совместимых с браузером, а не для взлома разных версий браузеров.

При этом IE10 имеет тенденцию быть совместимым с стандартом браузером. Вы можете посетить http://caniuse.com/ и найти диаграммы различных функций JavaScript и CSS и которые поддерживаются во всех браузерах.

Вы найдете, что IE10 придерживается многих этих стандартов.

2

Хотя мне нравится ряд ответов выше, я знаю, что иногда наличие множества возможных быстрых исправлений для заданной проблемы иногда может иметь значение.Таким образом, вот еще одно решение, я обнаружил, что хорошо работает:

<script language="javascript" type="text/javascript"> 
    if(Function('/*@cc_on return [email protected]*/')()) document.documentElement.className+= ' ie10'; 
</script> 

Тогда для реализации браузера конкретных правил CSS, в соответствующем файле CSS я добавить (к примеру):

.ie10 div{new css rule} 
.ie10 div{another new css rule} 
Смежные вопросы