Django 无法使用静态引用在外部 js 文件中加载 svg 文件
Django unable to load svg file in external js file using static reference
我需要从我的 javascript 代码中加载一个 svg 文件,我将其包含在我的 index.html 中。我知道 jinja 模板不能在 js 外部文件中使用。因此,作为一种解决方法,我将相同的内容存储在我在 js 代码中使用的 whiteLogo 和徽标变量中。
但是当我在 运行 服务器上滚动页面时出现错误,找不到资源。
Not Found: /[object HTMLImageElement]
[04/May/2022 12:18:05] "GET /[object%20HTMLImageElement] HTTP/1.1" 404 2441
我哪里出错了,我是否正确加载了徽标路径?
index.html
<script type="text/javascript">
var whiteLogo = "{% static "app/images/logo/white-logo.svg" %}";
var logo = "{% static "app/images/logo/logo.svg" %}";
</script>
<script src="{% static 'app/js/main.js' %}">></script>
main.js
window.onscroll = function () {
var header_navbar = document.querySelector(".navbar-area");
var sticky = header_navbar.offsetTop;
var logo = document.querySelector('.navbar-brand img')
if (window.pageYOffset > sticky) {
header_navbar.classList.add("sticky");
logo.src = logo;
} else {
header_navbar.classList.remove("sticky");
logo.src = whiteLogo;
}
// show or hide the back-top-top button
var backToTo = document.querySelector(".scroll-top");
if (document.body.scrollTop > 50 || document.documentElement.scrollTop > 50) {
backToTo.style.display = "flex";
} else {
backToTo.style.display = "none";
}
};
编辑:
试过这个
js
if (window.pageYOffset > sticky) {
header_navbar.classList.add("sticky");
logo.src = logoFromIndex;
} else {
header_navbar.classList.remove("sticky");
logo.src = whiteLogoFromIndex;
}
index.html
<script type="text/javascript">
var whiteLogoFromIndex = {% static 'app/images/logo/white-logo.svg' %};
var logoFromIndex = {% static 'app/images/logo/logo.svg' %};
</script>
我们使用在 index.html 中创建的变量徽标分配给在 javascript 文件 main.js
中创建的 logo
变量
var logo = document.querySelector('.navbar-brand img')
我犯了一个愚蠢的错误。
index.html
<script type="text/javascript">
var whiteLogoFromIndex = "{% static "app/images/logo/white-logo.svg" %}";
var logoFromIndex = "{% static "app/images/logo/logo.svg" %}";
</script>
<script src="{% static 'app/js/bootstrap.min.js' %}"></script>
main.js
window.onscroll = function () {
var header_navbar = document.querySelector(".navbar-area");
var sticky = header_navbar.offsetTop;
var logo = document.querySelector('.navbar-brand img')
if (window.pageYOffset > sticky) {
header_navbar.classList.add("sticky");
logo.src = logoFromIndex;
} else {
header_navbar.classList.remove("sticky");
logo.src = whiteLogoFromIndex;
}
// show or hide the back-top-top button
var backToTo = document.querySelector(".scroll-top");
if (document.body.scrollTop > 50 || document.documentElement.scrollTop > 50) {
backToTo.style.display = "flex";
} else {
backToTo.style.display = "none";
}
};
我需要从我的 javascript 代码中加载一个 svg 文件,我将其包含在我的 index.html 中。我知道 jinja 模板不能在 js 外部文件中使用。因此,作为一种解决方法,我将相同的内容存储在我在 js 代码中使用的 whiteLogo 和徽标变量中。
但是当我在 运行 服务器上滚动页面时出现错误,找不到资源。
Not Found: /[object HTMLImageElement]
[04/May/2022 12:18:05] "GET /[object%20HTMLImageElement] HTTP/1.1" 404 2441
我哪里出错了,我是否正确加载了徽标路径?
index.html
<script type="text/javascript">
var whiteLogo = "{% static "app/images/logo/white-logo.svg" %}";
var logo = "{% static "app/images/logo/logo.svg" %}";
</script>
<script src="{% static 'app/js/main.js' %}">></script>
main.js
window.onscroll = function () {
var header_navbar = document.querySelector(".navbar-area");
var sticky = header_navbar.offsetTop;
var logo = document.querySelector('.navbar-brand img')
if (window.pageYOffset > sticky) {
header_navbar.classList.add("sticky");
logo.src = logo;
} else {
header_navbar.classList.remove("sticky");
logo.src = whiteLogo;
}
// show or hide the back-top-top button
var backToTo = document.querySelector(".scroll-top");
if (document.body.scrollTop > 50 || document.documentElement.scrollTop > 50) {
backToTo.style.display = "flex";
} else {
backToTo.style.display = "none";
}
};
编辑:
试过这个
js
if (window.pageYOffset > sticky) {
header_navbar.classList.add("sticky");
logo.src = logoFromIndex;
} else {
header_navbar.classList.remove("sticky");
logo.src = whiteLogoFromIndex;
}
index.html
<script type="text/javascript">
var whiteLogoFromIndex = {% static 'app/images/logo/white-logo.svg' %};
var logoFromIndex = {% static 'app/images/logo/logo.svg' %};
</script>
我们使用在 index.html 中创建的变量徽标分配给在 javascript 文件 main.js
中创建的logo
变量
var logo = document.querySelector('.navbar-brand img')
我犯了一个愚蠢的错误。
index.html
<script type="text/javascript">
var whiteLogoFromIndex = "{% static "app/images/logo/white-logo.svg" %}";
var logoFromIndex = "{% static "app/images/logo/logo.svg" %}";
</script>
<script src="{% static 'app/js/bootstrap.min.js' %}"></script>
main.js
window.onscroll = function () {
var header_navbar = document.querySelector(".navbar-area");
var sticky = header_navbar.offsetTop;
var logo = document.querySelector('.navbar-brand img')
if (window.pageYOffset > sticky) {
header_navbar.classList.add("sticky");
logo.src = logoFromIndex;
} else {
header_navbar.classList.remove("sticky");
logo.src = whiteLogoFromIndex;
}
// show or hide the back-top-top button
var backToTo = document.querySelector(".scroll-top");
if (document.body.scrollTop > 50 || document.documentElement.scrollTop > 50) {
backToTo.style.display = "flex";
} else {
backToTo.style.display = "none";
}
};