Ich versuche ein modales Popup zu erstellen, das nicht geschlossen werden kann. Es hat eine Schaltfläche, mit der Sie durch Klicken auf die nächste Seite gelangen, aber ich möchte nicht, dass Benutzer sie schließen können.
Das modale Popup kann auf drei Arten geschlossen werden:
- Klicken Sie auf das Kreuz / die
[X]
Schaltfläche in der oberen rechten Ecke - Escape drücken
- Klicken Sie auf die Überlagerung
Bisher ist dies mein modaler JS und ich denke, clickableOverlay: false
ich habe bereits den dritten in Angriff genommen:
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 = '/';
}
}]
});
}
);
AKTUALISIEREN:
Ich habe auch versucht, das Modal anders einzurichten, als ich die bereitgestellten Lösungen ausprobiert habe:
require(
[ 'jquery', 'Magento_Ui/js/modal/modal' ],
function($, modal) {
modal({
//options
}, $("#popup"));
}
);
magento2
javascript
magento-2.1
jquery
modal
7ochem
quelle
quelle
Antworten:
Ich konnte keine Überschreibung der
modal.closeModal()
Funktion über Mixins erhalten, und ich denke auch, dass eine Überschreibung der Funktion die gesamte Website auf allen Modals überschreibt, was ich nicht möchte. Ich brauche es nur auf diesem einen Modal.Am Ende entfernte ich einfach jeden Auslöser, der aufruft
modal.closeModal()
. Es gibt einige andere modale Optionen, mit denen Sie dies erreichen können:opened
Option / dem Ereignis, die bzw. das direkt nach dem Öffnen des Modals ausgelöst wirdkeyEventHandlers.escapeKey
OptionDas ist also mein letzter Code:
quelle
Ich halte die Verwendung von Mixins in diesem Fall für relevant.
Sie können Folgendes versuchen:
Erstellen Sie zunächst in Ihrem Modul Folgendes
view/base/requirejs-config.js
:Dann erstellen Sie
view/base/web/hook.js
:Mit diesem Mixin ersetzen Sie die Implementierung der
closeModal
Methode durch Ihre eigene Methode. In diesem Fall würde das Zurückgeben von false das Schließen des Modals vermeiden.quelle
jQuery.mage.modal.closeModal
function() { return false; }
return false;
nicht genug. Ich fühle mich mit JS nicht besonders wohl, um ehrlich zu sein. Ich denke, Sie sollten diesen Artikel lesen, er kann Ihnen helfen, das Problem einzugrenzencloseModal()
Funktion Site-weit, die ich nicht möchte. Ich möchte dies nur auf dieses einzelne Modal