Подключение js-скриптов в opencart 3
Подключаю js-скрипты в отображение header через его контроллер:
$this->document->addScript('catalog/view/theme/kotly/js/vendor.js');
$this->document->addScript('catalog/view/theme/kotly/js/main.js');
$data['title'] = $this->document->getTitle();
$data['base'] = $server;
$data['description'] = $this->document->getDescription();
$data['keywords'] = $this->document->getKeywords();
$data['links'] = $this->document->getLinks();
$data['styles'] = $this->document->getStyles();
$data['scripts'] = $this->document->getScripts('header');
Скрипты подключаются, в devtools код "200",
но для этого скрипта в консоли выводится ошибка:"Uncaught TypeError: burger is null"
var burger = document.querySelector('.burger');
var burgerMenu = document.querySelector('.burger-menu');
var burgerMenuContent = document.querySelector('.burger-menu__content');
var body = document.querySelector('body');
var burgerLine = document.querySelectorAll('.burger__line');
burger.addEventListener('click', function () {
var headerBottom = document.querySelector('.header-bottom');
burgerMenu.classList.toggle('burger-menu--active');
burgerMenuContent.classList.toggle('burger-menu--active');
burgerLine.forEach(function (e) {
if (burgerMenuContent.classList.contains('burger-menu--active')) {
e.classList.add('burger-open');
} else {
e.classList.remove('burger-open');
}
});
<button class="burger header__burger btn-reset" aria-label="open menu">
<span class="burger__line"></span>
<span class="burger__line"></span>
<span class="burger__line"></span>
</button>
Но в статичной версии сайта ошибок нет и все работает, а на opencart нет
Ответы (1 шт):
Автор решения: opencartbot
→ Ссылка
На странице не найден DOM элемент с классом burger. После строки:
var burger = document.querySelector('.burger');
нужно добавить проверку на наличие такого элемента на странице:
if (burger.length > 0) {
...
}