<script></script> или <script/">?
Возможный дубликат:
Почему не работают самозакрывающиеся теги script?
Я только что нашел проводное поведение с тегом script в HTML.
I веб-сервер - nginx, и я использовал FAST CGI и PHP5. У меня есть page.html, который выглядит следующим образом:
<html>
<body>
<!-- <?php echo 'i am going to add php code here'; ?> -->
<script type="text/javascript" src="./my/javascript1.js" />
<script type="text/javascript" src="./my/javascript2.js" />
</body>
</html>
Если эта страница обслуживается непосредственно с веб-сервера, java script работает хорошо. Но если он перешел на PHP5, кажется, что выполняется только первый тег java script. Но если я изменю блок script на:
<script type="text/javascript" src="./my/javascript1.js"></script>
<script type="text/javascript" src="./my/javascript2.js"></script>
Все работает снова. Заметили, как теги закрыты? Да, вот почему я спрашиваю здесь. В чем разница? Предполагается, что они должны иметь ту же функцию/смысл. Кроме того, выходной HTML-код, полученный моим веб-браузером (Chrome/IE9), является одним и тем же, но почему лечился иначе?
Ответы
Ответ 1
Тегу script нужен отдельный закрытый тег для правильного кода. См. http://www.w3.org/TR/html401/interact/scripts.html#h-18.2.1
Некоторые браузеры будут принимать теги, закрывающие закрытие, другие - не будут, и используемая вами версия HTML также влияет на результат. Если вы не используете XHTML, теги не закрываются.
Передача файла с помощью механизма PHP не должна изменять результат, но возможно, что он пытается исправить неправильные теги script. Вы должны просмотреть источник в браузере, чтобы узнать, были ли теги изменены.
Ответ 2
Тег script должен иметь закрытый тег, даже если он использует атрибут src. избегая этого, вызывает нежелательное поведение.
Ответ 3
То, как ваш браузер интерпретирует ваш HTML, не имеет ничего общего с PHP, поскольку он НЕ является парсером HTML. Некоторые браузеры принимают это. другие не делают.... Также проверьте эту ссылку . для более Q & A о той же теме
Ответ 4
Похоже, ваш сервер настроен на вывод XHTML, а не HTML.
HTML не имеет таких вещей, как <tag />
. Но XML имеет их.
Проверьте декларацию типа документа в обоих случаях. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
и тому подобное в начале вашего документа.
Ответ 5
В основном это зависит от вашего DocType
, указанного в HTML
.
Если DocType
упоминается transitional XHTML
, то это не позволит закрывать тег script, как этот <script ... />
. Это позволило бы закрыть тег таким образом. <script ... ></script>
и т.д.
Если DocType
является чем-то другим, кроме XHTML
, в этом случае он будет зависеть от совместимости браузера.
Для справки см. это...
http://www.w3schools.com/tags/tag_doctype.asp