1


问:如何从 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

4

1 回答 1

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>
于 2013-05-07T09:07:40.693 回答