2

jQuery Fancybox を使用して、iFrame で開いたページで JavaScript 関数を呼び出そうとしています。

            $(".testbox").fancybox({
                maxWidth    : 800,
                maxHeight   : 600,
                fitToView   : false,
                autoSize    : false,
                closeClick  : false,
                openEffect  : 'none',
                closeEffect : 'none',
                afterShow: function() {
                        //var frameID = $('#fancybox-frame')
                        //frameID.getParam("test");                         
                    }
            }); 

        $(".testbox").each(function() {
                var element = this;
                $(this).fancybox({
                    'titleFormat'   : function() {
                        var astring = '<span>' + element.id + '</span>';
                        alert(astring);
                    }
                });
            });

HTML:

    <a class="testbox fancybox.iframe" href="include/testFrame.html">Iframe</a>

私が呼び出そうとしている testFrame.html の関数:

        function getParam(param) {              
            alert(param);               
        }

通常、Fancybox ポップアップを使用せずに iFrame で関数を呼び出すときにこれを行います。

        document.getElementById('myFrame').contentWindow.getParam();

しかし、Fancybox を使用する場合、iFrame 全体の ID を取得する方法がわかりません。どんな助けでも大歓迎です!

編集: 私もこのコードを試しましたが、これも機能しませんでした.IEでエラーが発生しました:オブジェクトはこのプロパティまたはメソッドをサポートしていません. 読み込んでいるページに機能があることを確認しました

    var $f = $("#fancybox-frame");
    var fd = $f[0].document || $f[0].contentWindow.document; 
    fd.getparam("test");  
4

1 に答える 1

2

以下を使用する必要があります。

var $f = $("#fancybox-frame");
$f[0].contentWindow.getParam("test");

理由:

  • メソッドは、documentオブジェクトのメソッドとしてではなく、グローバルに宣言されています。
  • JavaScript では大文字と小文字が区別されます。getParamとは異なりgetparamます。
于 2011-11-22T10:32:38.147 に答える