Может ли тег <script> быть не замкнутым? - программирование
Подтвердить что ты не робот

Может ли тег <script> быть не замкнутым?

У меня был этот код на моем веб-сайте

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"/>
<script type='text/javascript' src='/lib/player/swfobject.js'></script>

swfobject не работал (не загружался).

После изменения кода:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
<script type='text/javascript' src='/lib/player/swfobject.js'></script>

Он работал нормально.

Документ анализируется как HTML5.

Я думаю, что это смешно. Хорошо, предоставил тег, который закрыт, и самозакрывающийся тег не совпадает. Поэтому я бы понял, может ли jQuery не загружаться (хотя я нахожу это смешным).

Но я не понимаю, что jQuery загружается, но следующий, правильно написанный тег, не?

4b9b3361

Ответ 1

В HTML есть теги, которые всегда самозакрываются. Например, <hr>Some content here</hr> не имеет никакого смысла. Точно так же есть теги, которые не могут быть самозакрытыми. Тег <script> является одним из них.

Я не уверен в причине отсутствия самозакрывающихся тегов <script>, но причина может заключаться в том, что тег должен был всегда содержать код внутри. Опять же, я не уверен.

Ответ 2

Поскольку он анализируется как:

Строка 1: Начальный тег для script

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"/>

Строка 2: JavaScript (действительно сломанный JavaScript!) для выполнения, если внешний script, указанный в строке 1, не загружается

    <script type='text/javascript' src='/lib/player/swfobject.js'>

Строка 3: Конечный тег для script запущен в строке 1

</script>

Хорошо, предоставил тег, который закрыт, а сам закрывающий тег не совпадает.

Они одинаковы (если нет содержимого), но только в документах XML. Документ XHTML, используемый как application/xhtml + xml, является XML-документом. В HTML-документе, благодаря наследию неправильных реализаций браузерами, самозакрывающийся тег является всего лишь начальным тегом (и это нормально, только когда конец тега запрещен).

Ответ 3

Ответ Дэвида Дорварга объясняет это с одного угла, но есть более глубокая причина, почему вы не можете этого сделать:

Слэш в конце тега не делает его самозакрывающимся в HTML

Самозакрывающийся синтаксис является частью XML. В нормальном HTML-документе это не имеет значения.

Ответ 4

@Joe Hopfgartner: Вы изменили код для проверки, если

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js" />
<script type="text/javascript" src="/lib/player/swfobject.js" />

работает?; -)

Обновление

Запустить код и элемент <p> скрывается, поэтому... похоже, что он работает?

HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>questions/4531772</title>

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"/>
<script type="text/javascript" src="4531772.js"/>
</head>

<body>

<p class="test">Testing...</p>

</body>
</html>

JavaScript (4531772.js)

$(document).ready(function() {
    $('.test').hide();
});