2013-05-06 57 views
1


問:如何從iFrame中關閉mootools對話框?關閉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

+0

複製在這裏http://stackoverflow.com/questions/5477324/iframe-calling-parent-javascript – Adidi 2013-05-06 23:00:40

+0

我看到了這篇文章,我沒有問題從iFrame中調用其他功能(剛剛添加/編輯了我的問題)。但正是這個mootools窗口我無法關閉它。 – Sergio 2013-05-07 05:00:49

回答

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與當前的對話實例,現在你可以從調用它的方法沒有任何這樣的問題:

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

謝謝!那樣做了!欣賞它。 – Sergio 2013-05-07 09:25:01