[英]Close Bootstrap modal from inside iframe
使用iframe打开Twitter Bootstrap Modal的页面:
<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>
而我正在寻找一种从iframe内部关闭此模态的方法。 防爆。 单击iframe-modal.html
内的链接以关闭模式。 我尝试了什么,但没有成功:
$('#iframeModal', window.parent.document).modal('hide');
$('#iframeModal', top.document).modal('hide');
$('#iframeModal').modal('hide');
您始终可以创建一个全局可访问的函数来关闭Bootstrap模式窗口。
例如。
window.closeModal = function(){
$('#iframeModal').modal('hide');
};
然后从iframe中调用它:
window.parent.closeModal();
问题是jQuery事件正在使用单个页面的jQuery实例注册。 所以, $('#iframeModal', window.parent.document).modal('hide');
实际上是要在iframe中触发hide事件,而不是父文档。
这应该工作: parent.$('#iframeModal').modal('hide');
这将使用父的jQuery实例来查找项(因此不需要上下文),然后它将在父项中正确触发事件。
如果你不知道使用iframe
的模态的id
,还有一个解决方案:
添加函数CloseModal
function CloseModal(frameElement) {
if (frameElement) {
var dialog = $(frameElement).closest(".modal");
if (dialog.length > 0) {
dialog.modal("hide");
}
}
}
其中frameElement
是对iframe
元素容器的引用。
这个参数可以从iframe
传递,如下所示:
window.parent.CloseModal(window.frameElement);
有关window.frameElement
更多信息,请点击此处
您也可以触发单击关闭按钮:
$('#iframeModal button.mce-close', parent.document).trigger('click');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.