Я работаю над проектом, в котором мы перешли от XHTML к HTML обратно в XHTML, и существуют некоторые определенные поведенческие изменения в отношении рендеринга страницы до загрузки CSS и сценариев, которые читают стили, читающие их до загрузки CSS , Кто-нибудь может пролить свет на то, почему происходит следующее и что с этим можно сделать?
По сути, у меня есть страница со следующей структурой:
<body>
<!-- Content from Source A -->
<link href="http://a.example.com/style.css" />
<header>...</header>
<!-- Content from Source B -->
<link href="http://b.example.com/style.css" />
<div>...</div>
<!-- Content from Source A -->
<footer>...</footer>
<script src="http://a.example.com/script.js">
/* e.g. */
alert($('header').offset().height);
</script>
</body>
Когда мы были в режиме рендеринга HTML, страница блокирует рендеринг в ожидаемых точках. Когда мы нажимаем на Source A CSS, рендеринг приостанавливается (пустой экран); когда мы нажимаем на Source B CSS, рендеринг приостанавливается (виден заголовок). Когда мы нажимаем на Source A JavaScript, рендеринг приостанавливается (показана полная страница), и скрипт считывает стили элементов из их отрендеренного состояния. (В действительности, конечно, WebKit не прекращает синтаксический анализ DOM или выполнение JavaScript во время загрузки CSS, но он останавливает выполнение в первой точке, где сценарию необходимо прочитать стиль.)
Когда мы находимся в режиме XHTML, страница вообще не останавливает рендеринг и полностью отрисовывает всю страницу. После этого он, по-видимому, обрабатывает сценарии и таблицы стилей в порядке загрузки, или, скорее, выполняет сценарии по порядку, но не ожидает загрузки таблицы стилей перед выполнением загруженного сценария. Это означает, что страница будет отображаться три раза (без форматирования, с одной таблицей стилей и двумя таблицами стилей), и сценарий может выводить совершенно неточные значения для размеров элементов.
Может кто-то пролить свет на это? Это происходит во всех протестированных мной браузерах WebKit, включая Chrome 17, Mobile Safari 5 и Android Browser 2.1. Есть ли способ обеспечить порядок рендеринга HTML, не прибегая к типу mime text/html
?