Не работают js скрипты и не открывается окно popup на некоторых страницах сайта Dupal 8.9

Главные вкладки

Аватар пользователя Aleksandr Nenashev Aleksandr Nenashev 21 августа 2022 в 15:31

Здравствуйте, на сайте на некоторых страницах не работают скрипты js. Если зайти в админку и перейти на эти страницы то все начинает работать. Есть мысли что где-то в какой-то функции прописано, на каких страницах подключаться скриптам. Уже перечитал много статей и все безрезультатно. Подскажите где искать данную функцию, если конечно дело в ней.

Лучший ответ

Аватар пользователя gun_dose gun_dose 24 августа 2022 в 18:13

Ищите в шаблонах или тексте незакрытые тэги. У вас проблема в том, что не отрабатывает drupalSettingsLoader, т.к. он ищет скрипт с сеттингами среди прямых потомков head или body. У вас же после загрузки страницы элемент с сеттингами оказывается вложен в div. Такое чаще всего происходит при наличии незакрытых тегов

Комментарии

Аватар пользователя Aleksandr Nenashev Aleksandr Nenashev 21 августа 2022 в 16:05

файл theme.libraries.xml

global-styling:
version: VERSION
css:
theme:
app/libs/toastr/build/toastr.css: {}
app/libs/font-awesome-4.7.0/css/font-awesome.min.css: {}
app/libs/fontawesome/css/fontawesome.min.css: {}
app/libs/slick-carousel/slick/slick.css: {}
app/libs/fancybox/source/jquery.fancybox.css: {}
dist/frontend.css: {}
dist/style.css: {}
dist/custom.css: {}

js:
app/libs/toastr/build/toastr.min.js: {}
app/libs/slick-carousel/slick/slick.min.js: {}
app/libs/fancybox/source/jquery.fancybox.js: {}
dist/custom.js: {}
dist/scripts.js: {}

dependencies:
- core/drupal
- core/jquery
- core/jquery.cookie
- core/drupal.dialog.ajax
- core/jquery.form

font-awesome:
remote: https://fortawesome.github.io/Font-Awesome/
version: 4.5.0
license:
name: MIT
url: https://fortawesome.github.io/Font-Awesome/license/
gpl-compatible: true
css:
theme:
https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.... { type: external, minified: true }

front-page:
version: 1.x
css:
theme:
css/front-page.css: {}
js:
js/webform-rate.js: {}
js/search.js: {}
js/header.js: {}
dependencies:
- core/jquery

layout-page:
version: 1.x
css:
theme:
css/layout-page.css: {}
js:
js/webform-rate.js: {}
js/search.js: {}
dependencies:
- core/jquery

webform-rate:
version: 1.x
header: true
js:
js/webform-rate.js: {}
dependencies:
- core/jquery

search:
version: 1.x
css:
theme:
css/search.css: {}

modular:
version: 1.x
css:
theme:
css/modular.css: {}

sitemap:
version: 1.x
css:
theme:
css/sitemap.css: {}

Аватар пользователя OldWarrior OldWarrior 21 августа 2022 в 16:21

Aleksandr Nenashev wrote: На этой странице не работают https://kfmk-modul.ru/modular/scope/stroitelstvo/modulnye-torgovye-pavilony

Судя по консоли:

1. Ресурс с «https://kfmk-modul.ru/js/date.js» был заблокирован из-за несоответствия MIME-типа («text/html») (X-Content-Type-Options: nosniff).

2. Ресурс с «https://kfmk-modul.ru/modular/scope/stroitelstvo/path-to-your-script» был заблокирован из-за несоответствия MIME-типа («text/html») (X-Content-Type-Options: nosniff).

Следует задать атрибут type="text/javascript" для включений этих скриптов.

Далее:

3. TypeError: drupalSettings.ajaxTrustedUrl is undefined

4. Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на https://stats.g.doubleclick.net/j/collect?t=dc&aip=1&_r=3&v=1&_v=j96&tid.... (Причина: не удалось выполнить запрос CORS).

Почитайте про политику CORS в Drupal 9 и про то, как настроить доверенные хосты.

Аватар пользователя OldWarrior OldWarrior 21 августа 2022 в 16:39

На самом деле имея кучу ошибок в консоли - крайне сложно разобраться с причиной того, почему перестаёт работать JS. Возможно, какой-то один из JS-скриптов в итоге приводит к фатальной ошибке и "падению" всей дальнейшей JS-обработки. Поэтому лучше сразу разбираться со всеми ошибочными сообщениями.

Ну и кроме того, так вообще-то нельзя делать:
...<script src="/js/date.js"></script>...
Судя по тому, что нет атрибута типа type (т.е. отсутствует типичная для Друпала обвязка) - это включение прописано вручную в шаблоне. На это указывает также и то, что эта строка размещена в коде страницы, а не в типичных для Друпала местах включений JS местах (header/footer).

Аватар пользователя Aleksandr Nenashev Aleksandr Nenashev 23 августа 2022 в 23:24

Там разные контейнеры по моему, футеры разные на страницах. На странице где не работают скрипты футер сжатый как будто в контейнере. Да контент обернут в див с классом class="component" вместе с футером только как это может повлиять? Хотя нет класс этот есть и там и там. При входе в админку футер становится во всю ширину страницы.

Аватар пользователя gun_dose gun_dose 24 августа 2022 в 18:13

Ищите в шаблонах или тексте незакрытые тэги. У вас проблема в том, что не отрабатывает drupalSettingsLoader, т.к. он ищет скрипт с сеттингами среди прямых потомков head или body. У вас же после загрузки страницы элемент с сеттингами оказывается вложен в div. Такое чаще всего происходит при наличии незакрытых тегов