#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 не выполняется при нажатии кнопки «Назад».