ここ数時間インターネットを検索し、ここに投稿する前にすべてを試して、宿題をうまくやったことを願っていますが、これは不可能と言っても過言ではないので、これが私の最後の手段です。
私は簡単なことをしたいです(しかしJavaScriptでは難しいようです):
- ボタンをクリック->ウィンドウを開く(window.openを使用)
- ポップアップウィンドウでアクションを実行し、値を親(オープナー)に返します
しかし、このポップアップに対してコールバックを定義して、体系的な方法でそれを実現したいと思います。何かのようなもの:
var wnd = window.open(...)
wnd.callback = function(value) {
console.log(value);
};
ポップアップウィンドウのJSコードでコールバックプロパティを定義してみました。
var callback = null;
残念ながら、それは機能しません...
$('#action').click(function() {
console.log(callback);
});
...最初に設定した「null」だけを返します。
また、ウィンドウのロード後に親ウィンドウでコールバックを設定しようとしました(window.onload = ...と$(window).ready()の両方を介して)、どれも機能しませんでした。
また、コールバックを内部的に登録するために、子ウィンドウのソースコードでいくつかのメソッドを定義しようとしました。
function registerCallback(_callback)
{
callback = _callback; // also window.callback = _callback;
}
しかし、同じ結果になります。
そして、私にはこれ以上のアイデアはありません。もちろん、window.openerを使用して値を設定するのは簡単ですが、この子ウィンドウ(実際にはDAMシステムのアセットセレクター)に必要な柔軟性の多くを失います。
アイデアがあれば共有してください。百万ありがとう!