Только Opera полностью поддерживает page-break-inside
.
Ссылки:
Раздел CDATA требуется при необходимости в документе для парсинга как XML (например, когда страница XHTML интерпретируется как XML) , и Вы хотите быть в состоянии записать литерал i<10
и a && b
вместо i<10
и a && b
, поскольку XHTML проанализирует код JavaScript как проанализированные символьные данные в противоположность символьным данным по умолчанию. Это не проблема со сценариями, которые хранятся во внешних исходных файлах, но для любого встроенного JavaScript в XHTML Вы будете , вероятно , хотят использовать раздел CDATA.
Примечание, что много страниц XHTML никогда не предназначались, чтобы быть проанализированными как XML, в этом случае, это не будет проблемой.
Для хорошей рецензии на предмете, см. https://web.archive.org/web/20140304083226/http://javascript.about.com/library/blxhtml.htm
Когда Вы идете для строгого соответствия XHTML, Вам нужен CDATA так же, меньше, чем и амперсанды не отмечаются как недопустимые символы.
, Когда Вы хотите, чтобы он проверил (в XML/XHTML - спасибо, Loren Segal ).
Сделайте не использование CDATA в HTML4, но Вы должны использование, CDATA в XHTML и должен использование CDATA в XML, если у Вас есть незавершенные символы как < и>.
Когда браузеры рассматривают разметку как XML:
<script>
<![CDATA[
...code...
]]>
</script>
, Когда браузеры рассматривают разметку как HTML:
<script>
...code...
</script>
, Когда браузеры рассматривают разметку как HTML и Вы хотите, чтобы Ваша разметка XHTML 1.0 (например), проверила.
<script>
//<![CDATA[
...code...
//]]>
</script>
Анализатор HTML будет обрабатывать все, что находится между
, как часть сценария. Некоторым реализациям даже не нужен правильный закрывающий тег; они останавливают интерпретацию сценария в «.
», что является правильным в соответствии со спецификациями
Обновление В HTML5 и в текущих браузерах это уже не так.
Итак, в HTML это не возможно:
<script>
var x = '</script>';
alert(x)
</script>
A CDATA
раздел не имеет никакого эффекта . Вот почему вам нужно написать
var x = '<' + '/script>'; // or
var x = '<\/script>';
или подобное.
Это также относится к файлам XHTML, обслуживаемым как text / html
. (Поскольку IE не поддерживает типы содержимого XML, это в основном верно.)
В XML применяются другие правила. Обратите внимание, что браузеры (не IE) используют синтаксический анализатор XML только в том случае, если документ XHMTL обслуживается с типом содержимого XML.
Для анализатора XML тег script
не лучше любого другого тега. В частности, узел сценария может содержать нетекстовые дочерние узлы, запускаемые " <
"; а знак « &
» обозначает сущность символа.
Итак, в XHTML это невозможно :
<script>
if (a<b && c<d) {
alert('Hooray');
}
</script>
Чтобы обойти это, вы можете обернуть весь скрипт в разделе CDATA
. Это сообщает синтаксическому анализатору: «В этом разделе не обрабатывает« <
»и« &
»как управляющие символы ». Чтобы механизм JavaScript не интерпретировал « » и «
]]>
»
Таким образом, старые браузеры не будут разбирать код Javascript и страница не сломается.
Обратная совместимость. Это должно понравиться.
CDATA говорит браузеру отображать текст как есть, а не рендерить его как HTML.
Это сделано для того, чтобы убедиться, что проверка XHTML работает правильно, когда у вас есть JavaScript, встроенный в вашу страницу, а не на внешнюю ссылку.
XHTML требует, чтобы ваша страница строго соответствовала требованиям разметки XML. Поскольку JavaScript может содержать символы со специальным значением, вы должны заключить его в CDATA, чтобы гарантировать, что проверка не пометит его как неверно сформирован.
На HTML-страницах в Интернете вы можете просто включить необходимый JavaScript между тегами и. Когда вы проверяете HTML на своей веб-странице, содержимое JavaScript считается CDATA (символьные данные), поэтому валидатор игнорирует . То же самое не так, если вы следуете более поздним стандартам XHTML при настройке вашего страница в Интернете. В XHTML код между тегами сценария считается PCDATA (проанализированные символьные данные), которые, следовательно, обрабатываются валидатором.
Из-за этого вы не можете просто включить JavaScript между тегами скрипта на своей странице, не «сломав» вашу веб-страницу (по крайней мере, в том, что касается валидатора).
Вы можете узнать больше о CDATA здесь , а больше о XHTML здесь .
Это X (HT) ML. Когда вы используете такие символы, как <
и >
в JavaScript, например для сравнения двух целых чисел это должно быть проанализировано как XML, поэтому они будут отмечены как начало или конец тега.
CDATA означает, что следующие строки (все до ]]>
не являются XML и поэтому не должны анализироваться таким образом.
По сути, это позволяет писать документ, который является одновременно XHTML и HTML. Проблема в том, что в XHTML парсер XML будет интерпретировать символы &,<,> в теге script и вызовет ошибку парсинга XML. Поэтому вы можете писать свой JavaScript с сущностями, например:
if (a > b) alert('hello world');
Но это непрактично. Более серьезная проблема заключается в том, что если вы читаете страницу в HTML, тег script считается CDATA "по умолчанию", и такой JavaScript не будет выполняться. Поэтому, если вы хотите, чтобы одна и та же страница была в порядке при использовании парсеров XHTML и HTML, вам нужно заключить тег script в элемент CDATA в XHTML, но НЕ заключать его в HTML.
Этот трюк отмечает начало элемента CDATA как комментарий JavaScript; в HTML парсер JavaScript игнорирует тег CDATA (это комментарий). В XHTML парсер XML (который запускается перед JavaScript) обнаруживает его и рассматривает все остальное до конца CDATA как CDATA.
CDATA указывает, что содержимое внутри не является XML.
Вот объяснение в википедии