簡體   English   中英

從iframe內部關閉Bootstrap模式

[英]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");
        }
     }
}

其中frameElementiframe元素容器的引用。

這個參數可以從iframe傳遞,如下所示:

window.parent.CloseModal(window.frameElement);

有關window.frameElement更多信息,請點擊此處

您也可以觸發單擊關閉按鈕:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM