我有以下代码打开父对话框:
window.addEvent("domready", function(e){
/* Modal */
$("mootools_dialog").addEvent("click", function(e){
e.stop();
var dlgx = document.getElementById("mootools_dialog").offsetLeft-window.getScroll().x-20;
var dlgy = document.getElementById("mootools_dialog").offsetTop+window.getScroll().y-400;
dlgx = (dlgx < 20) ? 20 : dlgx;
dlgy = (dlgy < 20) ? 20 : dlgy;
var SM = new SimpleModal({"hideHeader":true,"closeButton":false,"hideFooter":true,"offsetLeft":dlgx, "offsetTop":dlgy });
var form_check = null;
SM.show({
"model":"modal",
"title":"Title, or empty?",
"contents":"<iframe src='booking.iframe.php' id='booking_iframe' scrolling='no' /></iframe>"
});
})
});
它可以调用iFrame中的函数,例如href='javascript:{parent.book_click();}'
但是我找不到关闭mootools窗口的方法。
在iFrame中我需要什么?
我试图在父级中调用一个函数来关闭窗口,但是无法使代码工作
<a href="javascript:{parent.close_dialog();}">Close</a>
或
parent.SimpleModal.close()
- 但没有成功
我有mootools 1.3.2
答案 0 :(得分:1)
您似乎正在使用SimpleModal类进行自定义对话框。您应该注意的第一件事是它没有close
方法。但是它有hide
方法来完成这项工作。
但是hide
方法不能在全局SimpleModal
类上调用,它应该在实例上调用(那是你的SM
变量)。因此,您可以修改您的代码,如下所示:
window.SM = new SimpleModal({"hideHeader":true,"closeButton":false,"hideFooter":true,"offsetLeft":dlgx, "offsetTop":dlgy });
var form_check = null;
SM.show({
"model":"modal",
"title":"Title, or empty?",
"contents":"<iframe src='booking.iframe.php' id='booking_iframe' scrolling='no' /></iframe>"
});
现在你有了带有当前对话框实例的全局变量SM
,现在你可以从<iframe>
调用它的方法而不会出现这样的问题:
<a onclick="parent.SM.hide()">Close</a>