web-dev-qa-db-ja.com

iframe上のFancybox.close()

最新のfancybox(2.0.4)を使用していて、iframe用のfancyboxを作成しました。コンテンツは正しく表示されます。 iframe内に表示されるHTMLに「閉じる」ボタンを追加します。閉じるボタンが、ファンシーボックスの右上隅にある「x」をクリックしたときと同じ結果になることを願っています。私はよく知っています FancyBox iframeはparent。$を未定義として返します(WordPressを使用) 、そして私のparentは何も含まれていないDOMオブジェクトです。また試した

window.parent.jQuery.fancybox.close();
window.parent.jQuery.fn.fancybox.close();
parent.jQuery.fn.fancybox.close();
parent.jQuery.fancybox.close();

何か助けはありますか?

更新:

a.js(a.htmlにリンク)

$(document).ready(function() {
    $(".fancybox").fancybox({
        maxWidth    : 800,
        maxHeight   : 600,
        fitToView   : false,
        width       : '70%',
        height      : '70%',
        autoSize    : false,
        closeClick  : false,
        type        : 'iframe',
        openEffect  : 'none',
        closeEffect : 'none',
        afterClose  : function() { 
            window.location.reload();
        }
    });
});

a.html

<a class="fancybox fancybox.iframe" id="newLink" href="new.html">link</a>

fancyboxiframeウィンドウを閉じるボタンをnew.html内に配置するにはどうすればよいですか。

更新:完全なhtmlファイル

a.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
        <link rel="stylesheet" href="fancybox/jquery.fancybox.css?v=2.0.4" type="text/css" media="screen" />
        <script type="text/javascript" src="fancybox/jquery.fancybox.pack.js?v=2.0.4"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $(".fancybox").fancybox({
                    maxWidth    : 800,
                    maxHeight   : 600,
                    fitToView   : false,
                    width       : '70%',
                    height      : '70%',
                    autoSize    : false,
                    closeClick  : false,
                    type        : 'iframe',
                    openEffect  : 'none',
                    closeEffect : 'none',
                    afterClose  : function() { 
                        window.location.reload();
                    }
                });
            });
        </script>
    </head>

    <body>
        <a class="fancybox fancybox.iframe" id="newLink" href="b.html">link</a>


    </body>
</html>

b.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
        <link rel="stylesheet" href="fancybox/jquery.fancybox.css?v=2.0.4" type="text/css" media="screen" />
        <script type="text/javascript" src="fancybox/jquery.fancybox.pack.js?v=2.0.4"></script>
    </head>

    <body>
        <input type="submit" value="Cancel" id="cancelBtn" onclick="parent.jQuery.fancybox.close()"/>
    </body>
</html>
9
Mr.

手動で閉じるボタンは次のようになります。

<a href="javascript:parent.jQuery.fancybox.close();"><img src="myCloseButton.png" alt="close fancybox" /></a>

[〜#〜] update [〜#〜]<form>タグではなくonsubmitを使用する必要がありますbutton画像で、「new.html」に次のように設定します

<form id="login_form" action="process.php" onsubmit="javascript:parent.jQuery.fancybox.close();">

UPDATE#2作業デモページを参照

UPDATE#3:議論が長すぎてどこにも行かなくなったので、この回答に対する追加のコメントをすべて削除することにしました。しかし、これが他の誰かを助けることができるなら、私はコードと実際のデモンストレーションへのリンクを許可しました。

31
JFK
    try{
        parent.jQuery.fancybox.close();
    }catch(err){
        parent.$('#fancybox-overlay').hide();
        parent.$('#fancybox-wrap').hide();
    }

!!! onCloseをサポートしていません!!!

3
Aommy Indy

Javascriptでこれを試してください:

$ .fancybox.close();

0