从内部的iframe关闭引导模式(Close Bootstrap modal from inside

2019-08-17 08:35发布

页面将打开Twitter的引导模态与iframe中:

<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');

Answer 1:

你总是可以创建一个全局可访问的功能,关闭引导模式窗口。

例如。

window.closeModal = function(){
    $('#iframeModal').modal('hide');
};

然后从IFRAME,调用它使用:

window.parent.closeModal();


Answer 2:

问题是,jQuery的事件正在使用jQuery的个人页面的实例注册。 所以, $('#iframeModal', window.parent.document).modal('hide'); 实际上是要在iframe中,而不是父文件来触发隐藏的事件。

这应该工作: parent.$('#iframeModal').modal('hide');

这将使用jQuery的父母的情况下找到该项目(因此不需要上下文),它会再在父母正确地触发事件。



Answer 3:

万一有更多的解决方案,你不知道id其使用模式的iframe

附加功能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你可以找到在这里



Answer 4:

您也可以触发点击关闭按钮:

$('#iframeModal button.mce-close', parent.document).trigger('click');


文章来源: Close Bootstrap modal from inside iframe