2011-07-17 69 views
1

Facebox我使用这个MOD:关闭里面的iframe

http://lnx.shortcutto701.com/2010/05/21/using-iframe-with-facebox-jquery-plugin/

我的问题是,如何使一个按钮,这是iframe内关闭facebox。我一直在尝试这样一些变体:

<button style="height: 50px;" onclick="window.parent.$.trigger('close.facebox')"><span class="button"><span>Cancel</span></span></button> 
+0

是来自同一个域的父级和iframe内容?如果没有,那么它的xss限制阻止你。 –

+0

是的,他们是一样的。 –

回答

1

self.close()

$('.open').click(function(){ 
    facebox = window.open("", 
    "facebox","status=1,width=350,height=150"); 
    facebox.document.write('<h1>The Popup Window</h1><p><a onclick="self.close();"  href="#">close</a></p>'); 
}); 
2

下面是我工作:

我的页面有一个DIV内的IFRAME,该DIV是什么facebox应该是fadeInfadeOut。该IFRAME的SRC是上有一个链接页面,看起来像这样:

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

在包含DIV和IFRAME页面(不叫进IFRAME页)的HEAD,我有JavaScript功能close_facebox()看起来像这样:

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

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

顺便说一句,请参阅facebox.js 1.2版本的第47和49行 - 此解决方案就在.js文件本身的注释“用法”部分。我复制&粘贴线49到我的功能,没有改变任何事情,除了取消注释吧:)

0

必须同时使用父的jQuery对象,并通过父母的文件作为jQuery的说法:

parent.$(parent.document).trigger('close.facebox');