<script> не в <голове> ок?
У меня уже был этот вопрос, когда я немного задумался над любопытным кусочком ума, и я подумал, что попрошу ваш коллективный опыт для ответа на этот вопрос.
Чтобы уточнить название, скажем, у меня есть это:
alert("Some JS outside ");
Вне тегов <head></head>
моего HTML файла. Мой вопрос в том, хорошо ли это делать или нет, и насколько он используется так.
Мои инстинкты говорят мне, что все в порядке - я считаю, что браузер просматривает все HTML-теги <script>
и интерпретирует их, когда они его видят, поэтому все должно быть хорошо, но я не настолько хорош в работе браузеров.
Я ищу окончательный (или как можно более близкий к окончательному) ответ здесь - это нормально делать или нет?
РЕДАКТИРОВАТЬ: Чтобы спасти меня, отправляйте это несколько раз, я скажу это здесь. Большое спасибо за всех ваших входных людей. Подпишитесь на всех! Мне придется переподготовку, чтобы поставить JS внизу страниц - теперь, когда я думаю об этом, ослепительно очевидно, что скрипты внизу страницы лучше, чем верх. Спасибо за вашу помощь всем.
Ответы
Ответ 1
Лучшее место для тэгов script - перед тегом тега закрытия.
<html>
<head>
<title>Example</title>
</head>
<body>
Your Content
<script type="text/javascript" src="yourScriptHere.js"></script>
<script type="text/javascript">//Inline scripts etc.</script>
</body>
</html>
Сказано, что они могут быть другими местами без проблем, однако причина, по которой вы хотите их в конце, - это то, что вы хотите, чтобы страница загрузилась до ее выполнения, и вы также не хотите останавливать процесс загрузки клиента, заставляя их ждать на больших скрипты.
Ответ 2
Да, <script>
блоки вне <head>
в порядке.
На самом деле многие поощряют размещение их в конце <body>
. Помещая их перед </body>
, откладывает выборку/загрузку до тех пор, пока содержимое страницы... не ускорит рендеринг.
Из спецификации W3C HTML4:
Элемент SCRIPT помещает SCRIPT в документ. Этот элемент может появляться любое количество раз в HEAD или BODY документа HTML.
Ответ 3
Да. Все нормально. Infact, очень часто это необходимо. Во многих случаях у вас может быть некоторый длинный загружаемый (прочитанный: большой загружаемый) javascript, который не является критическим для страницы, поэтому вы хотите сначала загружать содержимое своей страницы, поэтому вы помещаете <script>
для этого javascript в в нижней части раздела <body>
.
Ответ 4
A script в теле вашего документа будет выполнен, когда он встречается. Если это функция, то "выполнение ее" просто означает определение функции, т.е. Ее добавление в список известных функций. Но если это не функция, если она является блоком автономных операторов, они будут выполняться там, где они встречаются.
Например, если вы написали:
<html><head>... whatever ...</head>
<p>Foo
<script>
document.write("bar")
</script>
<p>Plugh
</html>
В браузере отобразится:
Foobar
Plugh
Это может быть или не быть тем, что вы хотите.