2

親からポップアップ ウィンドウの contextData を設定する必要があります。私はこれを試します:

var some contextData = {};
$(function() {
    $('#clickme').click(function() {
        var w = window.open('http://jsfiddle.net');

        w.contextData = contextData            
        //w.context data is null in the popup after the page loads - seems to get overwritten/deleted
    });
});

うまくいかないので、次の考えは、コンテンツがロードされるまで待つことです

var some contextData = {};
$(function() {
    $('#clickme').click(function() {
        var w = window.open('http://jsfiddle.net');
        w.onload = function() {
            //Never Fires
            w.contextData = contextData;

        }
    });
});

このフィドルを参照してください。onload メソッドが起動しません。

これは機能します:

var some contextData = {};
    $(function() {
        $('#clickme').click(function() {
            var w = window.open('http://jsfiddle.net');
            setTimeout(function(){
                if(w.someVariableSetByThePageBeingLoaded) {
                    w.contextData = contextData;
                }
                else{
                    setTimeout(arguments.callee, 1);
                }

            }, 1);
        });
    });

しかし、明らかな優雅さの問題があります (しかし、現在の回避策です)。

私はあなたが他の方法に行くことができることを知っています(オープナー/親のメソッドにポップアップコールバックを持っていますが、これにより、コンテキストを検索する何らかの方法を維持する必要があります(そして、コンテキストへのキーをポップアップに渡す必要があります)クエリ文字列). 現在のメソッドでは、コンテキストをクロージャーにキャプチャできるため、ポップアップがはるかに再利用可能なコードになります。

私はこのクロス ドメインを実行しようとはしていません。親は iframe ですが (jsfiddle でテストするのは難しい)、親とポップアップの両方が同じドメインにあります。

提案?

4

1 に答える 1

1

iframeでこれを行っている場合は、この方法で試してください

HTML

<button id="clickme">Click Me</button>

<iframe id="framer"></iframe>

</p>

Javascript

$(function() {
    $('#clickme').click(function() {
        $("#framer").attr("src","http://jsfiddle.net");
        $("#framer")[0].onload = function(){
            alert('loaded');
        };
    });
});​

私はあなたのjsfiddle http://jsfiddle.net/HNvn3/2/を更新しました

編集 上記は完全に間違っているため、これは正しい方向を示している可能性がありますが、実際の環境で試して、機能するかどうかを確認する必要があります。

グローバル変数framesを設定する必要があります。

window.open("http://jsfiddle.net","child_window");

frames["child_window"]別のウィンドウを参照する可能性があります

jsfiddle で試したときに JavaScript アクセス エラーが発生したため、これが適切な方法である可能性があります

EDIT2

私のローカル開発ボックスで試してみると、これを機能させることができました

var w = window.open("http://localhost");
w.window.onload = function(){
    alert("here");
};

alert()親ウィンドウで起こったこと

于 2012-11-17T01:17:20.173 に答える