Javascript не работает должным образом в проекте djagno
Хотя мой код работает при использовании вне проекта Django, когда я помещаю его внутрь проекта, он ведет себя странно.
Точнее, объект document
не имеет тела, а только голову моего html. Таким образом, я не могу получить доступ к его классам. Я предполагаю, что что-то не так в связывании html и js файлов.
settings.py
STATIC_URL = 'static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>index.html</title>
{% load static %}
<link rel="stylesheet" href="{% static 'style.css' %}"/>
<script src="{% static 'script.js' %}"></script>
</head>
<body>
HelloWorld!
</body>
</html>
script.js
console.log(document.getElementsByTagName('html')[0].innerHTML)
Возвращение script.js:
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>index.html</title>
<link rel="stylesheet" href="/static/style.css">
<script src="/static/script.js"></script></head>
Вам следует подождать, пока ваш HTML полностью загрузится и будет разобран, прежде чем обращаться к нему.
Просто оберните свой сценарий по
window.addEventListener('DOMContentLoaded', (event) => {
console.log(document.getElementsByTagName('html')[0].innerHTML)
});
или поместите свой скрипт прямо перед закрывающим тегом </body>
.