Uncaught SyntaxError:无法在'Window'上执行'postMessage':调用'postMessage'时无效的目标原点'my_page'

时间:2014-04-29 19:15:47

标签: javascript jquery cross-browser postmessage

我有以下脚本

父页面(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(); }
        });

基本上打开弹出窗口然后弹出一些ajax并将结果返回给父级。但是从Child那里我得到了这个错误。

  

未捕获的SyntaxError:无法执行' postMessage'在' Window':无效的目标来源' pair_pixel_filter.php'在致电' postMessage'

1 个答案:

答案 0 :(得分:20)

postMessage的第二个参数是"目标原点"。这是页面所在的,而不是(php)文件的名称。

它必须是:

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

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