Như @Kevin được đề cập trong các nhận xét ở trên, bạn đang tiếp cận vấn đề này từ một góc độ sai.
Theo thiết kế, lõi Drupal (kể từ ít nhất là Drupal 5) sử dụng bộ lọc văn bản và định dạng đầu vào để làm sạch HTML do người dùng thêm vào trong trình chỉnh sửa WYSIWIG như CKEditor mặc định.
Các phiên bản trước của Drupal dễ dãi hơn về vấn đề này, nhưng các bản vá bảo mật trong nhiều năm cho các khai thác tập lệnh chéo trang khác nhau đã khiến việc chèn JS nội tuyến theo cách này thực sự rất khó khăn -- và vì lý do chính đáng.
Với Drupal, bạn không chỉ nói "Tôi tin tưởng bản thân mình để thêm JS vào một Bài báo này", mà bạn đang nói "Tôi tin tưởng tất cả người dùng có Vai trò cấp cho họ quyền sử dụng bộ lọc văn bản này." Không dễ để tạo bộ lọc văn bản không an toàn nữa. Nếu bạn đã làm như vậy, bạn sẽ muốn hạn chế việc sử dụng nó chỉ cho những người dùng đáng tin cậy có vai trò Quản trị viên.
Đối với một Drupalist có kinh nghiệm, việc đính kèm nội dung JavaScript vào mảng kết xuất không phải là vấn đề lớn. Nội dung CSS và JS được quản lý trong Drupal bằng cách tạo thư viện có thể được gắn vào mảng kết xuất của Drupal theo nhiều cách khác nhau, sử dụng mô-đun tùy chỉnh hoặc chủ đề tùy chỉnh, thông qua mã PHP hoặc mẫu Twig.
(Nếu bạn đang thiết lập một trang web Drupal không có một chủ đề tùy chỉnh, bạn có thể muốn xem xét lại. Bạn có thể nhanh chóng thực hiện một Chủ đề phụ bất kể chủ đề hiện tại của bạn là gì, để bạn có thể dễ dàng sửa đổi những thứ như thư viện JS và mẫu Twig.)
Tuy nhiên, tôi hiểu sự miễn cưỡng của bạn khi tìm hiểu phát triển mô-đun hoặc chủ đề tùy chỉnh chỉ để thêm một chút JavaScript.
Diễn đàn này được cho là được sử dụng để trả lời các câu hỏi về lõi Drupal, không đề xuất các mô-đun đóng góp. Tuy nhiên, có một mô-đun tương đối mới có thể phù hợp với nhu cầu của bạn:
Thành phần
Từ trang Dự án của mô-đun Thành phần:
Việc thêm các thành phần JS vào trang web Drupal của bạn trở nên dễ dàng hơn rất nhiều. Chỉ cần kết hợp các thành phần JS của bạn (bất kỳ loại nào) với một *.component.yml
và đặt nó trong mô-đun hoặc chủ đề của bạn. Bây giờ, thành phần của bạn sẽ có sẵn trong Drupal dưới dạng một khối - một cách tự động!
Phải thừa nhận rằng việc này không dễ bằng việc dán nội dung nào đó vào trường WYSIWYG, nhưng dù sao thì cách đó sẽ không bao giờ hoạt động (vì tính bảo mật). Bạn vẫn cần phải bắt đầu bằng cách tạo một mô-đun, chủ đề hoặc chủ đề phụ tùy chỉnh để bạn có thể thêm các thành phần JS của bạn vào thành phần.yml
tập tin. Nhưng nếu bạn đến từ tư duy của nhà phát triển JS, cách tiếp cận này sẽ cho phép bạn chỉ cần viết JS và dán nó vào một khối trên trang.
Lưu ý bảo mật bắt buộc:
Dự án này không nằm trong chính sách tư vấn bảo mật.
Sử dụng có nguy cơ của riêng bạn! Nó có thể có các lỗ hổng được tiết lộ công khai.
Nhưng xem xét rằng toàn bộ câu hỏi của bạn là về việc đánh bại các biện pháp bảo mật tích hợp của Drupal chống lại khai thác XSS, tôi không thể tưởng tượng rằng cảnh báo này sẽ ngăn cản bạn!
THEO SÁT: JavaScript nội tuyến Là được phép trong trình chỉnh sửa Gutenberg từ WordPress và đó là lý do tại sao @brown-paul khuyên bạn nên sử dụng Trình chỉnh sửa Gutenberg trong Drupal, điều này có thể còn dễ dàng hơn cho bạn nếu bạn đến từ nền tảng WordPress.