Я пытаюсь создать модальное всплывающее окно, которое не может быть закрыто. У него есть кнопка, по которой вы переходите на следующую страницу, но я не хочу, чтобы пользователи могли ее закрывать.
Модальное всплывающее окно можно закрыть тремя способами:
- Нажав на крестик /
[X]
кнопку в правом верхнем углу - Нажатие побега
- Нажмите на оверлей
Пока что это мой модальный JS, и я думаю, clickableOverlay: false
что уже занялся третьим:
require(
[ 'jquery', 'Magento_Ui/js/modal/modal' ],
function($, modal) {
$("#popup").modal({
autoOpen: true,
responsive: true,
clickableOverlay: false,
modalClass: 'modal-custom',
title: 'Popup',
buttons: [{
text: $.mage.__('Take me back to the homepage'),
class: 'action close-popup wide',
click: function () {
window.location.href = '/';
}
}]
});
}
);
ОБНОВИТЬ:
Я также пытался настроить модал по-другому, когда пробовал предоставленные решения:
require(
[ 'jquery', 'Magento_Ui/js/modal/modal' ],
function($, modal) {
modal({
//options
}, $("#popup"));
}
);
magento2
javascript
magento-2.1
jquery
modal
7ochem
источник
источник
Ответы:
Я не мог заставить переопределение
modal.closeModal()
функции работать через миксины, и я также думаю, что при использовании миксина она переопределяет весь веб-сайт на всех модальных моделях, что мне не нужно. Мне нужно только это на этом модале.В итоге я просто удалил любой триггер, который будет вызывать
modal.closeModal()
. Есть несколько других модальных опций, которые вы можете использовать для достижения этой цели:opened
параметром / событием, которое будет запущено сразу после открытия модалаkeyEventHandlers.escapeKey
вариантИтак, это мой последний код:
источник
Я считаю, что использование миксинов в этом случае будет уместным.
Вы можете попробовать следующее:
Сначала в вашем модуле создайте следующее
view/base/requirejs-config.js
:Затем создайте
view/base/web/hook.js
:С этим миксином вы заменяете реализацию
closeModal
метода своим собственным методом. В этом случае возвращение false позволит избежать закрытия модального режима.источник
jQuery.mage.modal.closeModal
дает мнеfunction() { return false; }
return false;
и не достаточно. Честно говоря, я не очень вежлив с JS. Я считаю, что вы должны прочитать эту статью, это может помочь вам сузить проблему или найти другой возможный способ сделать это: alanstorm.com/the-curious-case-of-magento-2-mixinscloseModal()
функцию сайта в целом, что я не хочу. Я только хочу применить это к этому единственному