2010-12-17 113 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(); //