Seite, die Twitter Bootstrap Modal mit iframe im Inneren öffnet:
<div id="iframeModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="btn btn-danger pull-right" data-dismiss="modal" aria-hidden="true">Close</button>
<div class="clearfix"></div>
</div>
<div class="modal-body">
<iframe src="iframe-modal.html"></iframe>
</div>
<div class="modal-footer">
</div>
</div>
Und ich suche nach einer Möglichkeit, diese Modalität aus dem iframe heraus zu schließen. Klicken Sie auf einen Link im iframe-modal.html
, um das Modal zu schließen. __ Was ich versucht habe, aber nicht erfolgreich war:
$('#iframeModal', window.parent.document).modal('hide');
$('#iframeModal', top.document).modal('hide');
$('#iframeModal').modal('hide');
Sie können immer eine global zugreifbare Funktion erstellen, die das modifizierte Fenster von Bootstrap schließt.
z.B.
window.closeModal = function(){
$('#iframeModal').modal('hide');
};
Rufen Sie es dann vom iframe aus mit auf:
window.parent.closeModal();
Das Problem ist, dass jQuery-Ereignisse in der jQuery-Instanz der einzelnen Seite registriert werden. $('#iframeModal', window.parent.document).modal('hide');
löst also das Hide-Ereignis im iframe aus, nicht im übergeordneten Dokument.
Das sollte funktionieren: parent.$('#iframeModal').modal('hide');
Dies wird die jQuery-Instanz des übergeordneten Objekts verwenden, um das Element zu finden (es wird also kein Kontext benötigt), und das Ereignis wird dann im übergeordneten Element korrekt ausgelöst.
Eine weitere Lösung für den Fall, dass Sie id
von Modal nicht kennen, die iframe
verwenden:
Funktion hinzufügen CloseModal
function CloseModal(frameElement) {
if (frameElement) {
var dialog = $(frameElement).closest(".modal");
if (dialog.length > 0) {
dialog.modal("hide");
}
}
}
dabei ist frameElement
Referenz auf iframe
Elementcontainer.
Und dieser Parameter kann wie folgt von iframe
übergeben werden:
window.parent.CloseModal(window.frameElement);
Mehr über window.frameElement
finden Sie hier
Sie können auch das Klicken der Schließen-Schaltfläche auslösen:
$('#iframeModal button.mce-close', parent.document).trigger('click');