Мы разрабатываем сайт, который интенсивно использует <base href>
(что типично для сайтов TYPO3). Сайт разработан в подкаталоге и позже будет перемещен в верхний каталог, поэтому мы не можем легко удалить <base href>
.
Наш клиент сказал нам, что иногда, когда она просматривает новые страницы, она получает содержимое страницы без примененного макета. Мы отладили это: это происходит только в IE9. Глядя на журналы, мы обнаруживаем, что при возникновении ошибки IE9 пытается загрузить CSS, JS и все изображения, следовательно, из неправильного местоположения: относительно текущего URL, а не относительно BASE HREF ... Дальнейшая проверка журналов показывает нам что пользователи IE8 также пострадали, в том числе некоторые тупые веб-пауки (для нас не проблема с последними, кого это волнует?).
Мы уже знаем о спекулятивном загрузчике / парсере IE8: http://blogs.msdn.com/b/ieinternals/archive/2009/07/27/bugs-in-the-ie8-lookahead-downloader.aspx
Я уверен, что мы НЕ сталкиваемся с ошибками, описанными ТАМ: Все элементы страницы (включая первый элемент заголовка) загружены из неправильного места. Эта ошибка описывает, что затрагиваются только вторые и более поздние элементы из заголовка страницы. Мы можем доказать это, просматривая журналы доступа при возникновении проблемы.
Простая перезагрузка устраняет проблему, сравнивая исходный код страницы с ошибкой, которая произошла, и без нее не показывает никакой разницы. Это влияет только на IE, все остальные браузеры в порядке.
Тег <base href>
является первым в теге <head>
. Мы перепробовали все возможные решения, ничего не помогло. Кажется, это ошибка IE.
Кто-нибудь еще испытывал это и нашел работу? У нас есть несколько других сайтов, использующих <base href>
, где мы не можем воспроизвести такое поведение в наших тестовых системах - поэтому, возможно, что-то вызывает или работает вокруг этой ошибки. Но я проанализировал логи этих сайтов и вижу, что некоторые посетители, использующие IE8, даже сталкиваются с этой ошибкой.
Как и просили в комментариях, вот запутанный пример моей HTML-головы:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<base href="http://client.site/cms/" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--
This website is powered by TYPO3 - inspiring people to share!
TYPO3 is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.
TYPO3 is copyright 1998-2011 of Kasper Skaarhoj. Extensions are copyright of their respective owners.
Information and contribution at http://typo3.com/ and http://typo3.org/
-->
<meta name="generator" content="TYPO3 4.5 CMS" />
<link rel="stylesheet" type="text/css" href="typo3temp/stylesheet_fad97d0aa7.css?1312295592" media="all" />
<link rel="stylesheet" type="text/css" href="fileadmin/css/styles.css?1319535102" media="screen" title="Standardstyles" />
<link rel="stylesheet" type="text/css" href="fileadmin/js/fancybox/jquery.fancybox-1.3.4.css?1310653643" media="all" />
<link rel="stylesheet" type="text/css" href="fileadmin/js/jqtransformplugin/jqtransform.css?1312810052" media="all" />
<script src="fileadmin/js/jquery-1.6.2.min.js?1310979164" type="text/javascript"></script>
<script src="fileadmin/js/jqtransformplugin/jquery.jqtransform.js?1312460310" type="text/javascript"></script>
<script src="typo3temp/javascript_93553eae97.js?1312462864" type="text/javascript"></script>
<link href="fileadmin/css/print.css" rel="stylesheet" media="print" type="text/css" />
<script src="/tools/formmailer.js" type="text/javascript" charset="utf-8"></script><title>Some title for the page</title>
</head>