我想将消息从一个域发送到另一个域。为此,我使用 postMessage 。我有一个似乎很好的代码,但仍然无法发送消息。经历了各种相关的帖子但没有用。
即使在同一个域上也无法正常工作。
如果有人能指出代码有什么问题,那将会非常有帮助。感谢
主页:
<html>
<head></head>
<body>
<iframe src="http://localhost/sandbox/test/test2.html"></iframe>
<script>
window.addEventListener( "message",
function (e) {
if(e.origin !== 'http://localhost/sandbox/test/test2.html'){ return; }
alert(e.data);
},
false);
</script>
</body>
</html>
iframe内容:
<html>
<head></head>
<body>
<script>
top.postMessage('hello', 'http://localhost/sandbox/test/test.html');
</script>
</body>
</html>
答案 0 :(得分:1)
你应该做一些基本的调试,找出问题所在。
您的函数以if
测试开始,但您似乎没有确定问题是否未输入if
或者是否未调用该函数所有
在那里放一个console.log()
语句来查找。
测试e.origin
的值是什么。
你应该发现它是http://localhost
(与你测试的不匹配)。 Origins不包括路径段。
这就是你的测试失败的原因。