Как @Кевин упоминалось в комментариях выше, вы подходите к этому с неправильной точки зрения.
По дизайну ядро Drupal (по крайней мере, начиная с Drupal 5) использует текстовые фильтры и форматы ввода для очистки HTML, добавленного пользователями в редакторах WYSIWIG, таких как CKEditor по умолчанию.
Более ранние версии Drupal были более снисходительны в этом отношении, но годы исправлений безопасности для различных эксплойтов межсайтового скриптинга действительно очень затруднили вставку встроенного JS таким образом — и на то есть веские причины.
С Drupal вы не просто говорите: «Я доверяю себе, добавляя JS в эту статью», вы говорите: «Я доверяю всем пользователям, чьи роли предоставляют им разрешение на использование этого текстового фильтра». Теперь не так просто создать небезопасный текстовый фильтр. Если бы вы это сделали, вы бы хотели ограничить его использование только доверенными пользователями с ролями администратора.
Для опытного друпалиста не составит большого труда присоединить актив JavaScript к массиву рендеринга. Ресурсы CSS и JS управляются в Drupal путем создания библиотеки который можно присоединить к массивам рендеринга Drupal различными способами, используя либо пользовательский модуль, либо пользовательскую тему, либо код PHP, либо шаблоны Twig.
(Если вы создаете сайт на Drupal без пользовательская тема, возможно, вы захотите пересмотреть. Вы можете быстро сделать подтема какой бы ни была ваша текущая тема, чтобы вы могли легко изменять такие вещи, как библиотеки JS и шаблоны Twig.)
Тем не менее, я понимаю ваше нежелание изучать разработку пользовательских модулей или тем только для того, чтобы добавить немного JavaScript.
Этот форум предназначен для ответов на вопросы о ядре Drupal, а не для рекомендаций модулей contrib. Тем не менее, есть относительно новый модуль, который может удовлетворить ваши потребности:
Составная часть
На странице Project модуля Component:
Добавление компонентов JS на ваш сайт Drupal стало намного проще. Просто объедините ваши компоненты JS (любого типа) с *.component.yml
и поместите его в свой модуль или тему. Теперь ваш компонент будет доступен в Drupal в виде блока - автоматически!
По общему признанию, это не так просто, как вставить что-то в поле WYSIWYG, но это все равно никогда не сработает (из-за безопасности). Вам все равно нужно будет начать с создания пользовательского модуля, темы или подтемы, чтобы вы могли добавить ваши компоненты JS в компонент.yml
файл. Но если вы исходите из мышления разработчика JS, этот подход позволит вам просто написать JS и вставить его в блок на странице.
Обязательное примечание по безопасности:
На этот проект не распространяется политика рекомендаций по безопасности.
Используйте на свой риск! Он может иметь публично раскрытые уязвимости.
Но, учитывая, что весь ваш вопрос касается преодоления встроенных мер безопасности Drupal против эксплойтов XSS, я не могу представить, что это предупреждение вас удержит!
СЛЕДОВАТЬ ЗА: Встроенный JavaScript является разрешено в редакторе Gutenberg из WordPress, поэтому @brown-paul рекомендует использовать Редактор Gutenberg в Drupal, что может быть даже проще для вас, если вы работаете с WordPress.