从父窗口关闭模态窗口

时间:2013-01-12 00:15:38

标签: javascript jquery iframe joomla modal-dialog

我有一个加载外部HTML页面的模态窗口。我试图弄清楚如何在加载内容后关闭此模态窗口。由于这是一个外部页面,我将无法更改此内容,所以我猜我需要在父页面上放置一个事件监听器,它可以检测何时加载了模态窗口内容?

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:0)

您是否使用.load()加载外部HTML页面?如果是这样,您可以在load()函数中添加回调函数。像这样:

$('#someDiv').load(function(){
    //Put code to close the modal
});

答案 1 :(得分:0)

JS:

从模态中调用父窗口中的方法:

window.opener.document.globalMethodInOpeningFile(param1, param2);

要关闭模态窗口,请在加载内容后调用此方法(您可以使用.load(callbackFn)检查加载情况):

window.close();

答案 2 :(得分:0)

如果您使用window.showModalDialog()打开此模态页面,则无法进行操作。正如其自己的名称所示,它会打开一个模态窗口。在主(开启)页面中执行javascript将暂停,直到模态关闭(因为模态对话框可以返回值,因此调用者必须等待对话框关闭才能继续)。由于您打开的页面是外部页面(我假设在另一个域中),它关闭的唯一方法是用户关闭它。

如果这是不可接受的,那么您需要使用window.open或HTML模式窗口,就像jQuery UI提供的那样。

答案 3 :(得分:0)

我假设你正在使用Joomla的核心模态功能。另一个假设是控制逻辑位于模态窗口内。这就是为什么答案不尽可能直截了当的原因,因为我不确定打开外部HTML页面的工作流程,您希望在之后触发事件。但是,在打开外部HTML页面的逻辑被触发后,您可以使用嵌入在模态窗口的呈现HTML中的以下JavaScript来关闭模式窗口:

window.parent.SqueezeBox.close();