Почему php не может определить, что кнопка возврата к совместимости с IE7 является IE7?

#php #html #ie-compatibility-mode

#php #HTML #ie-compatibility-mode

Вопрос:

У меня странные проблемы с режимом совместимости IE7 и HTML5.

Симптомы: Перейдя непосредственно на мою домашнюю страницу, используя PHP, можно обнаружить, что это IE7. После нажатия кнопки отправки формы и нажатия кнопки возврата назад он больше не определяет как IE7, даже находясь в режиме совместимости. Необходимо обновить или перезагрузить, чтобы снова определить как IE7.

Что я могу сделать, чтобы сделать это более надежным? Пожалуйста, не говорите использовать get_browser и browscap. Я не хочу продолжать поддерживать этот browscap.ini.

в заголовке html:

 <?php 
    /**
    *   IE 7 has trouble with jscrollpane, so disable for all IE except for 9 which works just fine.
    */ 
    $getBrowser = $_SERVER['HTTP_USER_AGENT']; 
    if( (!stristr($getBrowser,'MSIE')) || stristr($getBrowser,'MSIE 9')):
?>
<script src="jquery/jquery.mousewheel.js"></script>
<link  rel="stylesheet" href="styles/jquery.jscrollpane.css" />
<script src="jquery/jquery.jscrollpane.min.js"></script>
<script  src="jquery/js.js"></script>
<?php endif; ?>
  

Обновлено:

 $getBrowser = $_SERVER['HTTP_USER_AGENT']; 
        if( stristr($getBrowser,'MSIE') === false)
  

Перемещено js.js строка в:

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

По-прежнему выполняет то же самое при нажатии кнопки возврата.

Редактировать: Человек…. Я предполагаю, что у меня возникли серьезные проблемы с компьютером. Окно с Windows, должно быть, было испорчено после обновления Windows. Извините за этот сумасшедший материал. Отлично работает на другом компьютере, на котором еще не запущен центр обновления Windows.

Комментарии:

1. Это требует базовой отладки: что $_SERVER['HTTP_USER_AGENT']; содержит, когда это не работает? (Хотя вполне может быть, что существует более элегантное решение)

2. @Pekka, ты прав, когда я нажимаю кнопку возврата, HTTP_USER_AGENT, похоже, ничего не распознает и прерывает проверку. Я могу перейти на любую «другую» страницу и нажать кнопку «Назад», и проверка IE7 завершится неудачей. Я не знаю никакого другого способа проверить.

3. это действительно странно. Но условный комментарий, предложенный @tradyblix, должен выполнить эту работу

4. Хорошо, это может показаться действительно странным, но, копнув глубже, я обнаружил, что по какой-то причине, когда я нажимаю кнопку «Назад», он возвращается к действительно старой кэшированной версии index.php . Я удалил весь кэш, закрыл и перезагрузил IE, но он продолжает делать то же самое. WTF lol

Ответ №1:

У меня нет IE9, поэтому я не могу попробовать, но не могли бы вы сделать что-то подобное и поместить это на <head> :

 <!--[if IE 9]>
     // your includes here
<![endif]-->
  

Не уверен, важно ли для вас по-прежнему видеть script теги, включенные в исходный код, но, по крайней мере, они не будут выполняться, если проверка не была удовлетворена.

Комментарии:

1. Я пытаюсь, и по большей части все, что у меня работает для Chrome, FF4 и IE9, хорошо работает вместе, но отфильтровывается для IE7 и ниже. И да, у меня есть эти условия для IE7 и ниже.

Ответ №2:

Как сказал @tradyblix, вы можете сделать это на стороне клиента. Они называются условными комментариями.

Если вам нужно сделать это в PHP, я бы использовал strpos ().

 $ua = $_SERVER['HTTP_USER_AGENT'];
if (stripos($ua, 'MSIE') === false || stripos($ua, 'MSIE 9') !== false)
  

Комментарии:

1. Хорошо, я не понимаю, почему, когда ему не удается определить как IE7, он будет включать только js.js файл, и ни одно из других колес мыши и jscrollpane.min.js . Даже условие HTML if не выполняется при нажатии кнопки «Назад».