私は次のスクリプトを持っています
親ページ(pair_pixel_filter.php):
window.addEventListener("message", function(e) {
$('#log').append("Received message: " + (e.data));
}, false);
$('.photo-upload-btn').click(function(event) {
event.preventDefault();
window.open($(this).attr("href"), "popupWindow", "width=600,height=600,scrollbars=yes");
});
子ページ
$.ajax({
type: 'post',
url: url,
data: {
base64data: dataURL
},
success: function(data) {
window.opener.postMessage(data, "pair_pixel_filter.php");
window.close(); }
});
基本的にPopupを開き、ポップアップでajaxを実行して結果を親に返します。しかし、Childからこのエラーが発生しています。
キャッチされていないSyntaxError: 'window'で 'postMessage'の実行に失敗しました: 'postMessage'の呼び出しで無効なターゲットOrigin 'pair_pixel_filter.php'
postMessage
の2番目のパラメーターは、「ターゲットの起点」です。これは、(php)ファイルの名前ではなく、ページのあるdomainです。
次のようなものである必要があります。
window.opener.postMessage(data, "http://example.com");
参照: https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage