#javascript #html
#javascript #HTML
Вопрос:
Мой внешний файл js не работает в теге head, однако он работает при вызове в конце кода.
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title> java Script</title>
<link rel="stylesheet" href="style.css">
<script type="text/javascript" src="myjavascript.js"> </script>
</head>
Комментарии:
1. Итак, ваш скрипт, вероятно, пытается получить доступ к чему-то, чего там нет, когда он загружается в head, интересно, что это может быть?
2. его работа выполняется асинхронно.
3. Что вы подразумеваете под «работает»? Что он должен делать?
4. <script async=»» src=»myjavascript.js»> </script> by this way it works.
Ответ №1:
Прежде чем браузер сможет отобразить страницу, он должен построить дерево DOM путем анализа HTML-разметки. Во время этого процесса всякий раз, когда анализатор обнаруживает скрипт, он должен остановить и выполнить его, прежде чем продолжить синтаксический анализ HTML. Если ваш скрипт попытается получить доступ к элементу в <body>
вашем файле, произойдет сбой, потому что эта часть DOM еще не загружена.
Поместите свой скрипт перед конечным <body>
тегом.
https://developers.google.com/speed/docs/insights/BlockingJS
Комментарии:
1. да, он работает в конце тега body, но как он будет работать в теге head?
2. его работа выполняется асинхронно. понравилось <script async=»» src=»myjavascript.js»> </script>
3. @hanif Вы также можете использовать
defer
атрибут<script defer src="myjavascript.js">