[英]Next.js Vanilla JS script won't run on deployment
我正在使用 Next.js 构建一个简单的 static 站点。 我拥有的唯一香草 JS 脚本是用于移动菜单 - 将其打开并将 class 添加到正文以防止滚动:
if (process.browser) {
document.addEventListener('DOMContentLoaded', function() {
let mainNav = document.querySelector('#menu')
let navBarToggle = document.querySelector('#toggle')
let noScroll = document.querySelector('body')
navBarToggle.addEventListener('click', function () {
mainNav.classList.toggle('active')
navBarToggle.classList.toggle('close')
noScroll.classList.toggle('lock-scroll')
})
})
}
if process.browser
语句是我必须添加的,以使其在 localhost 上工作,该语句有效,但仅在第一次加载时有效,例如,当我第一次运行下一个开发时。 在我导航到另一个页面后它不会加载,我猜是因为页面没有被完全重新渲染,脚本需要哪个或什么?
然后,当我部署站点时,切换根本不起作用,即使是在第一次加载时也是如此。
无论如何,非常感谢您对这项工作的任何帮助!
process.browser
已被弃用,使用type of window
if (typeof window !== "undefined") {
document.addEventListener('DOMContentLoaded', function() {
let mainNav = document.querySelector('#menu')
let navBarToggle = document.querySelector('#toggle')
let noScroll = document.querySelector('body')
navBarToggle.addEventListener('click', function () {
mainNav.classList.toggle('active')
navBarToggle.classList.toggle('close')
noScroll.classList.toggle('lock-scroll')
})
})
}
如果该解决方案不起作用,您可以使用动态导入
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.