2014-03-07 3 views
0

Поскольку jQuery 2+ не поддерживает IE 8, мне нужно использовать предыдущую версию: jQuery 1.9.Условные комментарии, альтернативные загрузке jQuery

Есть ли способ включить JQuery 1.9 при использовании IE < = 8 и JQuery 2+ при использовании IE> 8. Я пробовал с условными комментариями:

<!--[if lt IE 9]><!--><script> .. googleapis jquery 1.9 .. </script><!--<![endif]--> 
<!--[if gte IE 9]><!--><script> .. googleapis jquery 2+ .. </script><!--<![endif]--> 

Проблема в том, что он не и я нашел некоторую информацию о нем, которая больше не поддерживается: http://msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx

Есть ли другой способ?

+0

IE8 поддерживает условные комментарии, так что вы можете относиться к IE9 +, как если бы они были не IE. –

+0

Если вам нужно поддерживать IE8, используйте самую последнюю версию jQuery с ветвью 1.x. Вы не должны загружать другую версию на основе браузера, вызывая большие проблемы. –

ответ

6

Вы хотите версию IE8 быть в закомментированная блоке, но версия не-IE9 не быть:

<!--[if lt IE 9]> <script> .. googleapis jquery 1.9 .. </script> <![endif]--> 
<![if !IE|gte IE 9]> <script> .. googleapis jquery 2+ .. </script> <![endif]> 

Live Example with alerts

IE8 распознает условные комментарии, но в других браузерах нет (включая новые IE).

Возможно, вы также захотите иметь !IE во втором, только для полноты, как указано выше.

+0

Я использую предупреждение для тестирования, и кажется, что второй работает, но первый нет (когда он меньше 9, он показывает оба предупреждения). Uncommented-line (<[if gte IE 9]>) просто отображается над моей страницей. – user3231419

+0

@ user3231419: У меня была опечатка, вам нужно '!' После '<' в начале второго блока. Вы просто не хотите, чтобы это был комментарий. –

1

Это будет служить различные версии JQuery для Internet Explorer версий 6-8:

<!--[if lt IE 9]> 
    <script src="jquery-1.9.0.js"></script> 
<![endif]--> 
<!--[if gte IE 9]><!--> 
    <script src="jquery-2.0.0.js"></script> 
<!--<![endif]--> 

или несколько легче читать (но функционально идентичные):

<!--[if lt IE 9]> 
    <script src="jquery-1.9.0.js"></script> 
<![endif]--> 
<!--[if (gte IE 9) | (!IE)]><!--> 
    <script src="jquery-2.0.0.js"></script> 
<!--<![endif]--> 
+0

Это не просто функционально идентично. Это одно: О, или я ослеп? – TheBlastOne

+1

Ослепленный, я боюсь :) Линия 4 отличается. –

0

Браво T.J. Кроудер (выше) за его ответ. У меня возникли некоторые проблемы, так как IE8 загружал файлы JQuery порой или сценарий, который я написал, не позволял JQuery запускать после этого из-за загрузки документа. Одно дополнение к вышеуказанному ответу, я фактически должен был изменить порядок этих двух условий, чтобы гарантировать, что более чем одна копия JQuery не загружается в IE8.

<![if !IE|gte IE 9]> <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script> <![endif]> <!--[if lt IE 9]> <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <![endif]-->

Смежные вопросы