Estou tentando criar um pop-up modal que não pode ser fechado. Ele tem um botão que leva você para a próxima página clicando nele, mas não quero que os usuários possam fechá-lo.
O pop-up modal pode ser fechado de três maneiras:
- Clicando na cruz /
[X]
botão no canto superior direito - Pressionando escape
- Clique na sobreposição
Até agora, este é o meu JS modal e acho clickableOverlay: false
que já resolvi o terceiro:
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 = '/';
}
}]
});
}
);
ATUALIZAR:
Também tentei configurar o modal de uma maneira diferente ao tentar as soluções fornecidas:
require(
[ 'jquery', 'Magento_Ui/js/modal/modal' ],
function($, modal) {
modal({
//options
}, $("#popup"));
}
);
magento2
javascript
magento-2.1
jquery
modal
7ochem
fonte
fonte
Respostas:
Eu não consegui uma substituição da
modal.closeModal()
função para trabalhar através de mixins e também acho que fazê-lo através de um mixin a substitui em todo o site em todos os modais, o que eu não quero. Eu só preciso disso neste modal.Acabei removendo qualquer gatilho que chamaria
modal.closeModal()
. Existem algumas outras opções modais que você pode usar para conseguir isso:opened
opção / evento que será acionado logo após a abertura do modalkeyEventHandlers.escapeKey
opçãoPortanto, este é o meu código final:
fonte
Eu acho que usar mixins nesse caso seria relevante.
Você pode tentar o seguinte:
Primeiro no seu módulo, crie o seguinte
view/base/requirejs-config.js
:Então crie
view/base/web/hook.js
:Com esse mixin, você substitui a implementação do
closeModal
método pelo seu próprio método. Nesse caso, retornar false evitaria fechar o modal.fonte
jQuery.mage.modal.closeModal
me dáfunction() { return false; }
return false;
não seja suficiente. Não sou super à vontade com JS para ser honesto. Eu acho que você deve ler este artigo pode ajudar a diminuir o problema ou encontrar outra maneira possível de fazê-lo: alanstorm.com/the-curious-case-of-magento-2-mixinscloseModal()
site da função, o que eu não quero. Eu só quero aplicar isso a este modal único