web-dev-qa-db-ja.com

Uncaught SyntaxError: 'Window'で 'postMessage'の実行に失敗しました: 'postMessage'の呼び出しで無効なターゲットOrigin 'my_page'

私は次のスクリプトを持っています

親ページ(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'

16
noobie-php

postMessageの2番目のパラメーターは、「ターゲットの起点」です。これは、(php)ファイルの名前ではなく、ページのあるdomainです。

次のようなものである必要があります。

window.opener.postMessage(data, "http://example.com");

参照: https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage

21
Rocket Hazmat