2011-07-17 98 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');