web-dev-qa-db-ja.com

jQueryダイアログ内のiframeからダイアログを閉じる方法は?

このようなダイアログを開くと:

$('<iframe id="externalSite" class="externalSite" src="http://www.example.com" />').dialog({
        autoOpen: true,
        width: 800,
        height: 500,
        modal: true,
        resizable: true
    })

Iframeを使用せずにダイアログを閉じるにはどうすればよいですか?

14
JD Isaacks

OK、ディスプレイをなしに設定してページにiframeを配置しました。私はそれをこのように開きます:

$('#externalSite').dialog({ ... });

メインの親ウィンドウには、次のような関数があります。

function closeIframe()
{
    $('#externalSite').dialog('close');
    return false;
}

私が呼び出すiframe内から:

window.parent.closeIframe();
24
JD Isaacks

次のように呼ぶだけでうまくいきました。

window.parent。$( '#externalSite')。dialog( 'close');

6
Kraftwurm

これを試しましたか?:

$(window.parent).dialog('close');

JQuery UIダイアログを使用したことがないので、実際に機能するかどうかはわかりません。ダイアログを閉じるために使用できるように、作成したダイアログへの参照を維持する必要があるように思われます。

次の方法で、親のDOM内の要素を検索することもできます。

$('#someParentDOMElement' , window.parent);

もちろん、これはすべて、iframe内にロードするサイトが親ドキュメントと同じドメインにあることを前提としています。そうでない場合、iframe内のドキュメントは親DOMにまったくアクセスできません。

0
James Sumners