【问题标题】:Close mootools dialog from inside of iframe从 iframe 内部关闭 mootools 对话框
【发布时间】:2013-05-06 13:02:27
【问题描述】:


问:如何从 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 中需要什么?
我试图在父级中调用一个函数来关闭窗口,但无法使任何代码工作。
&lt;a href="javascript:{parent.close_dialog();}"&gt;Close&lt;/a&gt;or
parent.SimpleModal.close() - 但没有成功。
我有 mootools 1.3.2

【问题讨论】:

  • 我也看到了那个帖子,我从 iFrame 内部调用其他函数没有问题(只是在我的问题上添加/编辑了它)。但正是这个 mootools 窗口我无法关闭它。

标签: javascript mootools simplemodal


【解决方案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,现在你可以从&lt;iframe&gt;调用它的方法,而不会出现这样的问题:

<a onclick="parent.SM.hide()">Close</a>

【讨论】:

  • 谢谢!那完成了工作!欣赏它。
猜你喜欢
  • 1970-01-01
  • 2016-05-12
  • 2012-12-29
  • 2011-05-22
  • 2012-06-07
  • 1970-01-01
  • 2014-07-11
  • 2011-04-04
  • 1970-01-01
相关资源
最近更新 更多