关闭iframe内部带有iframe的模式框

时间:2009-07-16 18:18:44

标签: javascript modal-dialog

我正在尝试以编程方式使用调用的JavaScript代码关闭Facebox模式 在iframe中。这似乎与JavaScript DOM无关。

https://github.com/defunkt/facebox

更一般地说,我如何关闭嵌入iframe的通用模式以及在iframe中关闭它的代码。 (抱歉(或眼睛)扭曲)

这是我的例子:

我有一个像这样的面具盒:

jQuery.facebox("stuff goes here <iframe src="example.php"...."  more stuff"); //opens the modal(works great)

然后在iframe中,我想调用jQuery(document).trigger('close.facebox');。如果我在父页面或模态页面上调用它,但在实际的iframe中不能调用它,它似乎只能工作。有没有办法可以通过在iframe example.php中调用它来使其关闭?

编辑:我问我如何使用jQuery从iframe内部访问父框架,以过度简化问题。

4 个答案:

答案 0 :(得分:2)

您无法在该弹出页面中修改“属于”父页面的元素。据我所知,你必须从父母发出你的隐藏代码。你可以随时在对话框中使用这样的代码:

parent.$("#dialog").hide();

我认为这就是你要问的......

答案 1 :(得分:1)

这对我有用:

我的页面在DIV中有一个IFRAME,DIV是facebox应该fadeIn和fadeOut。 IFRAME的SRC是一个页面,其上有一个链接,如下所示:

<a href="#" onclick="parent.close_QM_facebox()">close this facebox modal</a>

在包含DIV和IFRAME(不是调用IFRAME的页面)的页面的HEAD中,我有一个JavaScript函数“close_QM_facebox()”,如下所示:

function close_QM_facebox() { jQuery(document).trigger('close.facebox'); }

这就是全部。尚未经过跨浏览器测试或尚未投入测试。我花了几个小时谷歌搜索这个问题并尝试从单引号改为双引号,document-dot-this和parent-dot-that,window.frames ['whatever'],这个单行函数就可以了。如果您尝试从调用IFRAME的页面触发该功能,则必须确保使用 parent .close_QM_facebox()。希望这会有所帮助。

BTW,请参阅facebox.js ver 1.2的第47和49行 - 这个解决方案就在.js文件本身的注释掉的“用法”部分中。我复制了&amp;将第49行粘贴到我的函数中,除了取消评论之外没有改变任何东西:)

答案 2 :(得分:0)

嵌入式iframe是否指向其他域上的URL正确?在这种情况下,不能出于安全原因从iframe中对父文档进行任何调用。

答案 3 :(得分:0)

我想,您可以使用FancyBox。允许关闭iframe中的模态对话框的公共方法,也是使花式框像模态窗口一样的选项:   - 在iframe中使用 - parent。$。fancybox.close();

如果您在同一个域上使用脚本,没问题,如果您想使用跨域,只需提供每个页面(.php / html等),使用POST / GET安全地互相调用交换参数/查询。但要关闭fancybox模式,您必须使用相同的域页面运行此方法。

希望它适合你Stan。