Ich erstelle ein wirklich einfaches, aber etwas optimiertes Modal für die Darstellung eines iFrames. Ich öffne das Modell durch eine Javascript-Funktion und die modale Aufruf-Funktion, die von bootstrap bereitgestellt wird. In meinem Modal habe ich ein Symbol zum Schließen des Modals eingefügt. Wenn ich auf dieses Schließen-Symbol klicke, wird der Modal nicht ausgeblendet. Ich benutze ein Javascript-Onclick mit den von bootstrap zur Verfügung gestellten Funktionen .modal('show')
und .modal('hide')
. Das Modal wird nicht ausgeblendet, aber mein Konsolenprotokoll wird ausgelöst.
Ich weiß, es gibt viele Fragen mit einem ähnlichen Problem, aber diese Fragen enthielten nicht die Antwort, die ich gesucht hatte. Ich weiß, dass css in html einfach nicht richtig ist, aber ich habe ein paar schnelle Prototypen gemacht, also bitte verzeihen Sie mir das.
Code
Offener Link für Modal
<a href="#" onClick="openFeedback('getBootstrap')">Klik hier om de website te bekijken</a>
Das modale HTML
<!-- Modal -->
<div class="modal fade" id="iframe_feedback" style="padding-top: 20px;">
<i class="ion-close-round close-modal" style="position: fixed; right: 40px; font-size: 32px; color: white; top: 40px; cursor: pointer;" onClick="closeModal()"></i>
<div class="body-modal" style="max-width: 90%; margin: 0 auto; overflow: scroll;">
<div id="clip" style="overflow:scroll;">
<iframe src="/dashboard" style=" width:2600px; height: 1600px;"></iframe>
</div>
</div>
</div>
Die JS
function openFeedback(link) {
$('#iframe_feedback').modal('show');
console.log(link);
};
function closeModal() {
$("#iframe_feedback").modal('hide');
console.log('Close fired');
};
Mein Hauptproblem ist, dass mein Modal angezeigt wird. Außerdem wird der console.log
sowohl für das Anzeigen als auch das Ausblenden ausgelöst. Nach dem Klicken auf die Schaltfläche zum Schließen wird das Modal jedoch nicht ausgeblendet.
Es scheint so, als würden Sie brauchen den modal-dialog
div in Ihrem Modal, damit .modal('hide')
oder data-dismiss="modal"
funktionieren.
Ich habe Ihr Problem behoben, indem Sie die body-modal
-Klasse in modal-dialog
geändert haben. (und hat Ihr Nahes Symbol in Rot geändert, damit es im Snippet besser zu sehen ist)
function openFeedback(link) {
$('#iframe_feedback').modal('show');
console.log(link);
};
function closeModal() {
$("#iframe_feedback").modal('hide');
console.log('Close fired');
};
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.bundle.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<a href="#" onClick="openFeedback('getBootstrap')">Klik hier om de website te bekijken</a>
<div class="modal fade" id="iframe_feedback" style="padding-top: 20px;">
<i class="ion-close-round close-modal" style="position: fixed; right: 40px; font-size: 32px; color: red; top: 40px; cursor: pointer; z-index: 1700;" onClick="closeModal()">close</i>
<div class="modal-dialog" style="max-width: 90%; margin: 0 auto; overflow: scroll;">
<div id="clip" style="overflow:scroll;">
<iframe src="/dashboard" style=" width:2600px; height: 1600px;"></iframe>
</div>
</div>
</div>
Aber jetzt ist der Modal (visuell) etwas chaotisch.
Ich würde empfehlen, dass Sie die modal docs überprüfen. Mit den in Bootstrap 4 enthaltenen Funktionen würden Sie wahrscheinlich den Großteil Ihrer zusätzlichen (Inline-) CSS und JS entfernen und auf diese Weise sicherstellen, dass alles in den meisten Browsern gut funktioniert.
Wenn Sie die fade
-Klasse entfernen, funktioniert dies einwandfrei.
Ich denke, dass Sie einen modal-dialog
div benötigen, wenn Sie die fade
-Klasse verwenden möchten. Verwenden Sie auch nur eine Art von Schließ-/Öffnungsmodalen, entweder js oder data-toggle/data-dismiss
.
Sie können data-dismiss = "modal" verwenden, um das Modal zu schließen
<i class="ion-close-round close-modal" style="position: fixed; right: 40px; font-size: 32px; color: white; top: 40px; cursor: pointer;" data-dismiss="modal" ></i>