js external не работает в заголовочном теге html

#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">