親からポップアップ ウィンドウの 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 でテストするのは難しい)、親とポップアップの両方が同じドメインにあります。
提案?