2010-12-17 7 views
1

これまで数時間にわたって私を悩ませていました。Javascriptを使用してウィンドウを閉じます。

私は細字モーダルウィンドウのIFRAMEのバージョン使用しています:私は今、私が午前問題は、私はインラインフレーム自体(同じドメイン)内からモーダルを閉じることができないです

http://davidwalsh.name/facebook-lightbox

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

0:のような呼び出しでそれが可能であるGoogleの研究の時間から理解
parent.$.nyroModalRemove(); 

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

しかし、lightboxで可変的に必要とされる実際の呼び出し、たとえばblabla.close()を見つけることができません。 IveはFirebugとjavascriptデバッガを無駄にしようとしました。

作業近い湖底の例はここで見ることができます(これは、実際のボックスモーダルに位置しています) http://davidwalsh.name/dw-content/lightface.phpクリック=「WalshFrame(LightFace.IFrame)」

任意のアイデア?

+0

あなたは 'コンソールことができます。IFRAME内のリンクから 'log'親か' $ '?また、IFRAME URLはリモートドメインですか? –

+0

ソースコードを見ると、Ilight = new LightFace.IFrame({height:400、width:900、url: 'http://davidwalsh.name'、タイトル: 'David Walsh Blog!'})addButton ( 'close'、function(){this.close();}、 'blue')。 – Hoff

答えて

2

作品:

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です。

だから、あなたが探し変数が定義されてthere->Ilight

+0

いいね!私はそれを機能させることができないので、それをどう呼んでいるのですか?Close From Iframek Webby

+0

私はそれをファイアバグでテストしました。ライトボックスを開いて、iframeの中でドキュメントのソースを編集し(あなたのコメントのようなコマンドでリンクを追加しています)、それが動作します。私は最後に 'return false'を忘れたと思います。 –

+0

あなたは素晴らしいです – Webby

1

私はEric MartinのSimpleModalと同様のことをしています。私が取り組んでいた問題は、$.modal.close()$.nyroModalRemove())がグローバルな機能ではないということです。私の解決策は、親ページにグローバル関数を作成し、それをIFRAMEから呼び出すことでした。

親ページ

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

IFRAMEのページ

parent.Ilight.close(); 

コールを参照してくださいと私のための

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

私は数日前にそれを使っていました!そして最終的にはLightFaceで解決しました...私はこの爆破された緊急の問題を乗り越えることができれば私が探しているものに完璧です...私はあなたの解決策を1秒で与えるでしょう – Webby

0

あなたはIFRAME内のクローズボタンを持つようにしたいと思いますなぜ私は理解していません。 davidウォルシュのページの例をもっと見ると、閉じるボタンは、ではなく、のiframe内にあるモーダルの一部です。 だから私は最善の解決策は、(ウォルシュの例のように)閉じるボタンを配置するiframeの周りにいくつかの外側のフレームを持つことだと思う。このソリューションを使用すると、閉じるボタンを自分で配置することができない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(); // 
関連する問題