页面将打开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');
你总是可以创建一个全局可访问的功能,关闭引导模式窗口。
例如。
window.closeModal = function(){
$('#iframeModal').modal('hide');
};
然后从IFRAME,调用它使用:
window.parent.closeModal();
问题是,jQuery的事件正在使用jQuery的个人页面的实例注册。 所以, $('#iframeModal', window.parent.document).modal('hide');
实际上是要在iframe中,而不是父文件来触发隐藏的事件。
这应该工作: parent.$('#iframeModal').modal('hide');
这将使用jQuery的父母的情况下找到该项目(因此不需要上下文),它会再在父母正确地触发事件。
万一有更多的解决方案,你不知道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
你可以找到在这里
您也可以触发点击关闭按钮:
$('#iframeModal button.mce-close', parent.document).trigger('click');