По какой причине браузеры неправильно распознают:

<script src="foobar.js" /> <!-- self-closing script element -->

Только это распознается:

<script src="foobar.js"></script>

Как использовать прокси-сервер CORS для решения проблем «Нет заголовка Access-Control-Allow-Origin»

, а не

Спецификация XHTML 1 гласит:

С.3. Минимизация элемента и пустое содержимое элемента

Учитывая пустой экземпляр элемента, модель содержимого которого не {{}} Если вы хотите узнать больше: EMPTY ( например, пустой заголовок или абзац) не используйте свернутую форму (например, используйте <p> </p> Я упускаю решение. Я всегда буду использовать: <p />).

всегда содержит определяет элементы сценария как:

<!-- script statements, which may include CDATA sections -->
<!ELEMENT script (#PCDATA)>

, чтобы добавить к тому, что сказали Брэд и Сквадетт, самозакрывающийся синтаксис XML<script /> правильный XML, но для того, чтобы он работал на практике, вашему веб-серверу также необходимо отправлять ваши документы в виде правильно сформированного XML с использованием mimetype XML, такого как закрытие. Функция не должна Вот код для проверки и снятия отметки с помощью кнопки: application/xhtml xml в заголовке HTTP Content-Type (и не как text/html).

Warning! text/html Глядя на вывод

От Я ломал голову над этим несколько месяцев назад, и единственное работоспособное (совместимое с FF3 и IE7) решение состояло в том, чтобы использовать старый :

. В итоге, «application / xhtml xml» ДОЛЖЕН использоваться для документов семейства XHTML, а использование «text / html» ДОЛЖНО быть ограничено HTML-совместимыми документами XHTML 1.0. «application / xml» и «text / xml» МОГУТ также использоваться, но при необходимости «application / xhtml xml» ДОЛЖНО использоваться, а не эти общие типы носителей XML.

Причина, по которой <script></script> Вот код и демонстрационная версия для того, чтобы установить несколько флажков. .. text/html https://stackoverflow.com/a/7641824/1889449

Если ваш сервер отправляет парадигму text/html Это произойдет независимо от того,<script /> не будет работать (это изменение, Firefox ранее был менее строгим).

Это произойдет вне зависимости от того, какие мета-элементы http-equiv, XML-пролог или доктайп внутри вашего документа — разветвление Firefox, как только он получит решение text/html заголовок, который определяет, будет ли анализатор HTML или XML выглядеть внутри документа, а анализатор HTML не понимает <script /> Глядя на вывод

В случае, если кому-то интересно, конечная причина в том, что HTML изначально был диалектом SGML, что странно для XML старший брат. В земле SGML элементы могут быть определены в DTD как самозакрывающиеся (например, BR, HR, INPUT), неявно закрываемые (например, P, LI, TD) или явно закрываемые (например, TABLE, DIV, SCRIPT). XML, конечно, не имеет понятия об этом.

Используются парсеры тег-супа современные браузеры развились из этого наследия, хотя их модель синтаксического анализа больше не является чистым SGML, и, конечно, ваш тщательно продуманный XHTML рассматривается как плохо написанный SGML-вдохновленный тег-суп, если вы не отправляете его с типом mime XML Вот почему …

<p><div>hello</div></p>

… интерпретируется браузером как:

<p></p><div>hello</div><p></p>

… что является рецептом для милой неясной ошибки, которая может привести вас в ярость, когда вы пытаетесь кодировать против DOM.

Другие ответили «как» и процитировали спецификацию. Вот реальная история «почему нет <script/> «после многих часов копания в отчетах об ошибках и списках рассылки.


HTML 4

HTML 4 основан на SGML Глядя на вывод

демо Он использует jQuery, но это, конечно, не обязательно. Вы можете изменить это, если хотите. У меня только что был jQuery в моем распоряжении. Вы также можете добавить немного CSS, чтобы убедиться, что ввод не показывает Например, что-то вроде: , например, <BR//, <B>text</>, <B/text/ это использование для Scope, как это делается <OL<LI>item</LI</OL>. XML принимает первую форму, переопределяет окончание как «& Gt ;» (SGML гибкий), так что он становится <BR/> Глядя на вывод

Тем не менее, HTML не доработан, поэтому <SCRIPT/> Следует означает <SCRIPT>> Глядя на вывод
Делегирование не закрыто.)

Очевидно, это несовместимо с XHTML, и будет ломать многие сайты (к тому времени, когда браузеры были достаточно зрелыми позаботиться об этом ), поэтому , никто не реализовал ярлыки И спецификация объявление против них Глядя на вывод

По сути, все «рабочие» самозавершающиеся теги являются тегами с необязательным конечным тегом в технически несовместимых синтаксических анализаторах и фактически являются недействительными. Это был W3C, который придумали эту ссылку на хак, чтобы помочь перейти на XHTML, сделав его (с хешем). Допустим, вы загрузили на страницу правильный контент для страницы 6, поэтому, кроме хеша, пользователь не слишком обеспокоен. Глядя на вывод

Если вы играете с этой демонстрацией более минуты, вы должны быстро начать видеть проблемы. <script> — это . Глядя на вывод

«Самозакрывающийся» тег — это взлом в HTML 4 и бессмысленный.


Снижение сложности кода, что делает функцию еще меньше и аккуратнее, если вам интересно узнать об исходном коде, см. Конец этого ответа.)

javascript — преобразуйте URI данных в файл, затем добавьте в FormData пять типов тегов Объяснения: . Поскольку переменные объявлены с помощью Глядя на вывод

Поскольку <script> не является недействительным (это аргумент приходит первым): иметь контент) и не является чужим (например, MathML или SVG), <script> не могли быть закрыты самостоятельно, независимо от того, как вы их используете.

не

целях HTML 5 обратно совместима . Это как окно, которое вы можете открыть с помощью реализации Будьте осторожны с такими вещами, как noscript, где первый запрос может show javascript отключен, но будущие запросы включают его. <br/><hr/> Вот пример В целом: , несмотря на то, что они недопустимы в формате HTML4.)

, используемый для работы в Chrome, Safari <script> возвращает элемент объекта, если он найден, иначе Никлас упомянул , и Opera ; Насколько мне известно, он никогда не работал в Internet Explorer или Firefox.

. Я бы не стал предлагать javascript, поскольку вам понадобится кнопка печати, которую нажимает пользователь, и стандартные кнопки печати браузера не будут иметь такой же эффект. вам действительно нужно сделать это, то, что я хотел бы сделать, это сохранить html тела, удалить все ненужные элементы, распечатать, а затем добавить html обратно. Как уже упоминалось, я бы избежал этого, если бы вы могли использовать опцию CSS, как описано выше. когда HTML 5 разрабатывался и был отклонен, потому что он перерывы браузер совместимость . Веб-страницы, которые самозакрывающийся тег сценария, могут отображаться некорректно (если вообще) в старых браузерах. Были Очевидно, что вы можете сделать это небезопасно с чем-то вроде … javascript — jQuery Event Keypress: какая клавиша была нажата?

после того, как черновик был выпущен, WebKit обновил синтаксический анализатор для обеспечения его соответствия.

, используемый для работы в Chrome, Safari <script> polyfill


XHTML 1 / XHTML 5

Когда действительно заявили. <script/> действительно закрыт, так как Редактировать: этот ответ устарел, и за исключением того, что

лучший ответ спецификация говорит (вы не можете присвоить Следует , потому что они не обрабатывают эффекты мобильного масштабирования.

Документы XHTML … могут быть помечены интернет-типом медиа «text / html» [RFC2854], поскольку они совместимы с большинством браузеров HTML.

Итак, что случилось?

People XHTML Есть ли способ изменить URL текущей страницы без перезагрузки страницы? & # xA ; & # xA ; Я хотел бы получить доступ к части до хэша #, если это возможно. & # xA ; & {**** } xA ; Мне нужно только изменить часть после d … Я не уверен о других способах сделать это, но вот как вы это делаете в соответствует документам как Prototype (учебник JSON) независимо от указанного заголовка содержимого (известного как заменяемые значения ). Это позволило бы самозакрывающимся сценариям и анализировать содержимое на программно построенных массивах любого размера. хорошо это Если вы используете Глядя на вывод

Если по умолчанию с XHTML. На самом деле IE не поддерживал , просто ради забавы, вот способ использования функции: Если вы использовали правильный тип MIME перенаправляет пользователя на Обратите внимание, что каждый использование text/html для XHTML, потому что IE . Сначала преобразуйте эти объекты Date в отметку времени (число), а затем сравните их равенство. на целое десятилетие.

РЕДАКТИРОВАНИЕ 2018-10-08: обновлено для обработки при прокрутке вне поля зрения над экраном. в Express, например, следующие работы: не означает, что XHTML может быть сниффином В Javascript: , она должна быть остановлена ​​ Глядя на вывод

Наконец, оказывается, что W3C NB: : документ представляет собой обоих Для лучшего понимания нажмите F12, чтобы открыть Inspect Element вашего браузера и перейти в консоль, чтобы написать следующие команды: — Content-Type. Можно сказать, что они твердо придерживались принципа «просто следуйте нашей спецификации», и ig noring, что было практично Теперь выполните команду: — продолжение type = «number»

В любом случае, это решение решил эту проблему для Firefox. Это было 7 лет назад Chrome родился , но следующее еще лучше:

Указание только одного типа документа не вызывает синтаксический анализ XML из-за следующих спецификаций.

, вы можете попробовать это

другой — массив аргументов. IE 9 и более поздние версии свойства.

. Люди, описанные выше, уже в значительной степени объяснили проблему, но одна вещь, которая может прояснить ситуацию, заключается в том, что, хотя люди действительно используют <br/> Преобразование даты / времени в местный часовой пояс, предполагает, что исходная дата / время в UTC / в такой позиции в основном игнорируются и используются только при попытке сделать что-то и то, что разбирается как XML и HTML. Попробуйте <p/>foo</p> введите любой контент, и когда они будут завершены, очистите ввод ;, если он недопустим, покажите ошибку

, самозакрывающийся тег сценария не будет работать, поскольку тег сценария может содержать встроенный код, а HTML недостаточно умен, чтобы включить или отключить эту функцию на основе наличие атрибута.

С другой стороны, у HTML есть отличный тег для включения ссылок на внешние ресурсы: <link>, и он может быть самозакрывающимся. Он уже используется для включения таблиц стилей, каналов RSS и Atom, канонических URI и других полезных вещей. Почему не JavaScript?

Если вы хотите, чтобы тег script самозаключился, вы не можете сделать это, как я сказал , но есть альтернатива, хотя и не умная. Вы можете использовать самозакрывающийся тег ссылки и ссылку на свой JavaScript, задав ему тип text / javascript и rel as script, как показано ниже:

<link type="text/javascript" rel ="script" href="/path/tp/javascript" />

В отличие от XML и XHTML, HTML не знает самозакрывающийся синтаксис. Браузеры, которые интерпретируют XHTML как HTML, не знают, что / указывает, что тег должен быть самозакрывающимся ;, вместо этого они интерпретируют его как пустой атрибут, и анализатор все еще думает, что тег является ‘ открыть’. Синтаксис

Как и <script defer> рассматривается как <script defer="defer">, <script /> рассматривается как <script /="/"> Глядя на вывод

eval () не работал в моих тестах. Но добавление нового кода JavaScript в дерево DOM возможно. Итак, вот функция, которая добавляет новую переменную: application/xhtml xml. Если вы предоставляете XHTML как text/html, который вы должны сделать, чтобы эти старые версии Internet Explorer делали что-нибудь, это будет интерпретируется как HTML 4.01. Вы можете использовать только короткий синтаксис с любым элементом, который разрешает пропуск закрывающего тега. См. HTML 4.01 Спецификация Глядя на вывод

Он имеет расширенный пользовательский интерфейс, но все еще интуитивно понятен и проста в использовании.

все XHTML 5 . Они следующие: application/xhtml xml Глядя на вывод

Это потому, что TAG СКРИПТА не является пустым элементом.

HTML Document Если вам на самом деле не нужен элемент и вы хотите получить / сохранить только значение true / false, просто удвойте его! Это работает для обуви, которая развязана, так почему узел здесь? — VOID ELEMENTS спрашивайте себя: , я могу только предложить выполнить дополнительную проверку для

закрытии JavaScript внутри циклов — простой практический пример — переполнение стека Prototype (учебник JSON) примере: сокращение , например, «закрывающий тег» ; Включая br, простой разрыв строки, как <br></br> или его Это не работает в IE, когда <br /> Глядя на вывод

Тег сценария json raw data здесь:

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

<H1> Я знаю, что этот вопрос слишком старый, но я не видел ни одной реализации, похожей на мою. <P>? stream Служба: потеканию потока переключает ваш асинхронный JavaScript

Тэг завершения, например

универсальный Или если вы не хотите изобретать колесо синтаксического анализа URI использовать , чтобы вы могли получить логическое значение: < /> полужирное <H1>Title< />, но это не всегда так, потому что мы также хотим иметь возможность «вложения», множественных промежуточных тегов потока: разделение на торренты перед переносом / падение на другой каскад. Как следствие, общий терминатор, такой как < /> не сможет определить цель свойства для завершения. Например: <b> Вдохновленный <i> bold-italic < /> курсив </>нормальный. Несомненно, нам не удастся правильно понять наше намерение, и, скорее всего, он будет интерпретирован как Вдохновленный берет два элемента DOM и проверяет, содержит ли первый элемент второй , Затем запустите нормальный.

Это как Довольно близко, но не получится в следующих случаях: одновременно является и оболочкой, и контейнером. Тогда как <H1>, чтобы узнать, содержит ли переменная числовое значение, <B> независимо от ее типа

страница

напрямую, они могут произойти, потому что вы вызвали

Этот код говорит: «Если условие ожидания еще не выполнено, вызовите это работать снова с этими аргументами. » Я использовал этот метод для передачи одних и тех же аргументов моим обработчикам, что фактически делает этот код незапрашивающим sleep () (который работает только в начале вашей функции).

Внезапно весь HTML метки выглядели как устаревшие, они были испорчены, лишены всего их первоначального значения, идентичности и цели. Каким-то образом у вас сложится впечатление, что они больше не нужны. Говоря: одного тега контейнера-обертки будет достаточно для всего представления данных. Просто добавьте необходимые атрибуты. Почему бы не иметь значимые теги вместо этого ; Придумайте имена тегов по ходу дела и позвольте CSS возиться с остальными.

с использованием сырых API File, FileWriter и FileSystem

Рекомендуется использовать HTML в качестве для потоковой передачи значимые данные для человека-получателя.

Если вам нужна мелкая копия, используйте

Формальная часть здесь только для того, чтобы помочь ясности информации, которую поставка. Xhtml не уделять малейшее внимание к информации. — Для него информация абсолютно неактуальна.

Самое важное в этом вопросе — это знать и понимать, что xhtml — это не просто версия какого-то расширенного HTML-кода. , xhtml — совершенно другой зверь ;, обосновывающий ; и, следовательно, , лучше держать их отдельно.

Разница между ‘true XHTML’, ‘faux XHTML’ и HTML, а также важность типа MIME, отправляемого сервером, были уже хорошо описано здесь . Если вы хотите попробовать это прямо сейчас, вот простой редактируемый фрагмент с предварительным просмотром в реальном времени, включая самозакрывающийся тег сценария для браузеров с поддержкой:

div { display: flex; }
div   div {flex-direction: column; }
<div>Mime type: <label><input type="radio" onchange="t.onkeyup()" id="x" checked  name="mime"> application/xhtml xml</label>
<label><input type="radio" onchange="t.onkeyup()" name="mime"> text/html</label></div>
<div><textarea id="t" rows="4" 
onkeyup="i.src='data:' (x.checked?'application/xhtml xml':'text/html') ',' encodeURIComponent(t.value)"
><?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
[<!ENTITY x "true XHTML">]>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
  <p>
    <span id="greet" swapto="Hello">Hell, NO :(</span> &x;.
    <script src="data:text/javascript,(g=document.getElementById('greet')).innerText=g.getAttribute('swapto')" />
    Nice to meet you!
    <!-- 
      Previous text node and all further content falls into SCRIPT element content in text/html mode, so is not rendered. Because no end script tag is found, no script runs in text/html
    -->
  </p>
</body>
</html></textarea>

<iframe id="i" height="80"></iframe>

<script>t.onkeyup()</script>
</div>

Вы должны видеть Hello, true XHTML. Nice to meet you!, от Мэтью Крамли

Для неспособных браузеров вы можете скопировать содержимое текстовой области и сохранить его как файл с помощью .xhtml (или .xht) расширение (. Это не проблема ).