我有以下脚本
父页面(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'
答案 0 :(得分:20)
postMessage
的第二个参数是"目标原点"。这是页面所在的域,而不是(php)文件的名称。
它必须是:
window.opener.postMessage(data, "http://example.com");
请参阅:https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage