2010-12-17 114 views
1

這一直困擾着我在過去的幾個小時裏。Javascript電話關閉窗口

我使用的淺體模態窗口的iframe版本:

http://davidwalsh.name/facebook-lightbox

我遇到的問題是我無法從IFRAME本身(同一域)

裏面現在關閉模式我從谷歌研究小時瞭解它可能與呼籲,如:

<a href="#" onclick="parent.$.nyroModalRemove(); return false;">Close Iframe</a> 

parent.$.nyroModalRemove(); 

window.parent.$.prettyPhoto.close(); 

但是我無法找到燈箱中實際需要的實際呼叫,例如blabla.close(); 我試過Firebug和JavaScript調試器無濟於事。

的工作密切BUTTOM例子可以在這裏看到(這是位於實際盒模式) http://davidwalsh.name/dw-content/lightface.php點擊=「WalshFrame(LightFace.IFrame)」

什麼想法?

+0

你能'控制檯。從IFRAME中的鏈接登錄'parent'或'$'?另外,IFRAME URL是遠程域名嗎? – 2010-12-17 19:40:18

+0

查看源代碼可能會有所幫助:Ilight = new LightFace.IFrame({height:400,width:900,url:'http://davidwalsh.name',title:'David Walsh Blog!'})。addButton ('Close',function(){this.close();},'blue')。open(); – Hoff 2010-12-17 19:40:27

回答

2

對我的作品與

parent.Ilight.close(); 

看到撥打:

document.id('iframe').addEvent('click',function() { 
    Ilight = new LightFace.IFrame({ height:400, width:900, url: 'http://davidwalsh.name', title: 'David Walsh Blog!' }).addButton('Close', function() { this.close(); },'blue').open(); 
    }); 

「iframe」是鏈接WalshFrame(LightFace.IFrame)的ID。

所以您要查找的變量定義那裏 - >Ilight

+0

聽起來不錯!你怎麼稱呼它,因爲我不能得到它的功能Close From Iframek Webby 2010-12-17 20:03:17

+0

我用螢火蟲測試它。我打開了lightbox,在iframe中編輯了文檔的源代碼(在命令中添加了一個與命令完全一樣的鏈接),它可以工作。我想你最後忘了'返回false'。 – 2010-12-17 20:07:40

+0

老兄你真棒 – Webby 2010-12-17 20:11:26

1

我正在做類似於Eric Martin的SimpleModal。我遇到的問題是$.modal.close()$.nyroModalRemove())不是全局函數。我的解決方案是在父頁面上創建一個全局函數,並從IFRAME調用它。

父頁

<script type="text/javascript"> 
    function closeModal() { 
     $.nyroModalRemove(); 
    } 
</script> 

IFRAME頁

<a href="#" onclick="parent.closeModal(); return false;">Close Iframe</a> 
+0

幾天前我正在使用它!並最終與LightFace解決...完美的是我要找的東西,只要我能克服這個爆炸性的緊密問題......我會在一秒內給你的解決方案一個鏡頭 – Webby 2010-12-17 20:04:22

0

我不明白爲什麼你會希望有iframe中的關閉按鈕。如果您仔細觀察大衛沃爾什頁面上的示例,關閉按鈕是iframe中的模式而不是的一部分。 所以我認爲最好的解決方案是在放置關閉按鈕的iframe周圍放置一些外框(如Walsh的示例)。使用此解決方案,還可以更輕鬆地將頁面加載到iframe中,因爲您無法親自放置關閉按鈕。

1

在第1頁:

<script type="text/javascript"> 
<!-- destroy lightface 
function getElementsByClass(node,searchClass,tag) { 
var classElements = new Array(); 
var els = node.getElementsByTagName(tag); // use "*" for all elements 
var elsLen = els.length; 
var pattern = new RegExp("\\b"+searchClass+"\\b"); 
for (i = 0, j = 0; i < elsLen; i++) { 
if (pattern.test(els[i].className)) { 
classElements[j] = els[i];  
j++; 
} 
} 
return classElements; 
} 
function closetest() { 
var el = getElementsByClass(document,'lightface','*'); 
// alert(el.length); 
for (I=0;I<el.length; I++) { el[I].parentNode.removeChild(el[I]); } 
} 
//--> 
</script> 

在IFRAME:

<? echo"<br><a href=\"javascript:void(0)\" onclick=\"javascript:window.parent.telecharge('http://www.site.com/thumbnail/thimg/".$_FILE S[userfile][name]."'); window.parent.closetest(); \">Pour publier cette image sur votre fil de messagerie, cliquez ici.</a>"; ?> 

window.parent.closetest(); //