我有一个正在加载外部 HTML 页面的模式窗口。我试图弄清楚如何在内容加载后关闭此模式窗口。由于这是一个外部页面,我将无法更改此内容,所以我猜测我需要在父页面上放置一个事件侦听器,以检测模式窗口内容何时加载?
任何帮助将不胜感激。
我有一个正在加载外部 HTML 页面的模式窗口。我试图弄清楚如何在内容加载后关闭此模式窗口。由于这是一个外部页面,我将无法更改此内容,所以我猜测我需要在父页面上放置一个事件侦听器,以检测模式窗口内容何时加载?
任何帮助将不胜感激。
我假设您正在使用 Joomla 的核心模式功能。另一个假设是控制逻辑位于模态窗口内。这就是为什么答案不像它可能的那样直截了当,因为我不确定打开您希望在之后触发事件的外部 HTML 页面的工作流程。但是,在触发打开外部 HTML 页面的逻辑之后,您可以使用嵌入在模态窗口呈现的 HTML 中的以下 JavaScript 来关闭模态窗口:
window.parent.SqueezeBox.close();
您是否使用.load()
加载外部 HTML 页面?如果是这样,您可以在函数中放置一个回调load()
函数。像这样:
$('#someDiv').load(function(){
//Put code to close the modal
});
JS:
要从模态调用父窗口中的方法:
window.opener.document.globalMethodInOpeningFile(param1, param2);
要关闭模态窗口,请在加载内容后调用此函数(您可以使用它.load(callbackFn)
来检查 load`):
window.close();
如果您要打开此模式页面,window.showModalDialog()
则不能。正如它自己的名字所表明的那样,它打开了一个模式窗口。在您的主(打开器)页面中执行 javascript 将暂停,直到模式关闭(因为模式对话框可以返回值,所以调用者必须等待对话框关闭才能继续)。由于您打开的页面是一个外部页面(我假设在另一个域中),它关闭的唯一方法是用户关闭它。
如果这是不可接受的,那么您需要使用window.open
jQuery UI 提供的 HTML 模态窗口。