Здравствуйте, на сайте на некоторых страницах не работают скрипты js. Если зайти в админку и перейти на эти страницы то все начинает работать. Есть мысли что где-то в какой-то функции прописано, на каких страницах подключаться скриптам. Уже перечитал много статей и все безрезультатно. Подскажите где искать данную функцию, если конечно дело в ней.
Не работают js скрипты и не открывается окно popup на некоторых страницах сайта Dupal 8.9
Главные вкладки
Лучший ответ
Ищите в шаблонах или тексте незакрытые тэги. У вас проблема в том, что не отрабатывает drupalSettingsLoader, т.к. он ищет скрипт с сеттингами среди прямых потомков head или body. У вас же после загрузки страницы элемент с сеттингами оказывается вложен в div. Такое чаще всего происходит при наличии незакрытых тегов
Комментарии
Что в консоли браузера когда скрипты не работают?
А здесь можно скидывать ссылку на сайт?
На этой странице все работает https://kfmk-modul.ru/mobilnye-zdaniya
На этой странице не работают https://kfmk-modul.ru/modular/scope/stroitelstvo/modulnye-torgovye-pavilony
файл 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: {}
Судя по консоли:
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 и про то, как настроить доверенные хосты.
Но на других страницах такие же ошибки но скрипты отлично срабатывают
На самом деле имея кучу ошибок в консоли - крайне сложно разобраться с причиной того, почему перестаёт работать JS. Возможно, какой-то один из JS-скриптов в итоге приводит к фатальной ошибке и "падению" всей дальнейшей JS-обработки. Поэтому лучше сразу разбираться со всеми ошибочными сообщениями.
Ну и кроме того, так вообще-то нельзя делать:
...<script src="/js/date.js"></script>...
Судя по тому, что нет атрибута типа
type
(т.е. отсутствует типичная для Друпала обвязка) - это включение прописано вручную в шаблоне. На это указывает также и то, что эта строка размещена в коде страницы, а не в типичных для Друпала местах включений JS местах (header/footer).Там разные контейнеры по моему, футеры разные на страницах. На странице где не работают скрипты футер сжатый как будто в контейнере. Да контент обернут в див с классом class="component" вместе с футером только как это может повлиять? Хотя нет класс этот есть и там и там. При входе в админку футер становится во всю ширину страницы.
Ищите в шаблонах или тексте незакрытые тэги. У вас проблема в том, что не отрабатывает drupalSettingsLoader, т.к. он ищет скрипт с сеттингами среди прямых потомков head или body. У вас же после загрузки страницы элемент с сеттингами оказывается вложен в div. Такое чаще всего происходит при наличии незакрытых тегов
Здравствуйте, вы были правы, закрывающий тег
был не в том месте из-за чего все ломалось. Спасибо!