php include с условными комментариями - PullRequest
1 голос
/ 02 декабря 2011

Я включил несколько сценариев jQuery на свой сайт. Скрипт не работает ни с чем ниже IE7. Теперь я хочу сделать следующее:

<!--[if !(lt IE 7]>
    <?php include 'script.html'; ?>
<![endif]-->

Он должен загружать скрипт только в том случае, если браузер «не ниже IE7». Но это не работает.

Есть ли способ решить эту проблему без , используя распознавание браузера на основе PHP?

Ответы [ 6 ]

5 голосов
/ 02 декабря 2011

Да, встроить распознавание браузера в свой jQuery / javascript. В javascript проверьте наличие способности или объекта , в котором вы нуждаетесь, и если его там нет, найдите код для его решения.

0 голосов
/ 02 декабря 2011

в php вы должны выполнить одно из следующих действий:

$browser = get_browser(null, true);
if($browser['browser'] == 'MSIE' && $browser['version'] >= 7) { /*CODE*/

ИЛИ

$u_agent = $_SERVER['HTTP_USER_AGENT']; 
$bname = 'Unknown';
$version= "";

if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) 
{ 
    $bname = 'Internet Explorer'; 
} 

// finally get the correct version number
$known = array('Version', $ub, 'other');
$pattern = '#(?<browser>' . join('|', $known) .
')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
if (!preg_match_all($pattern, $u_agent, $matches)) {
    // we have no matching number just continue
}

Условные выражения IE работают только после того, как страница была отправлена ​​в браузер, поэтомуВключаемые файлы PHP не будут работать. Чтобы включить файл сценария JS, вы должны использовать

<!--[if !(lt IE 7]>
<script src='script.js' type='text/javascript'></script>
<![endif]-->

. Для обнаружения браузера javascript вы должны использовать:

if(BrowserDetect.browser == "MSIE" && BrowserDetect.version >= '7') {
   /* CODE */
}
0 голосов
/ 02 декабря 2011

Вы не должны использовать обнаружение браузера.Вместо этого используйте Обнаружение функций , чтобы проверить, способен ли ваш браузер выполнить то, что вы хотите сделать .

0 голосов
/ 02 декабря 2011

другой альтернативой может быть использование хорошо известного скрипта ie7.js, который делает старые версии IE более "стандартными" совместимыми, что, несомненно, заставит ваш скрипт jQuery работать.

вы можете найти его здесь

0 голосов
/ 02 декабря 2011

Помощь с первой частью: она не работает, потому что вам не нужно ни ( до lte, ни !.Используйте

<!--[if gte IE 7]>
  <?php include 'script.html'; ?>
<![endif]-->

Подробнее: Страница Microsoft об условных комментариях IE

0 голосов
/ 02 декабря 2011

может быть открытие (у которого нет закрытия)?

...