从iframe内部关闭mootools对话框

时间:2013-05-06 13:02:27

标签: javascript mootools simplemodal

<问>:问:如何从iFrame中关闭mootools对话框?

我有以下代码打开父对话框:

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

1 个答案:

答案 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>