我试图使示例更简单,实际上我的问题是在更复杂的上下文中。我有一个包含 iframe (child.htm) 的 html 页面 (parent.htm)。html 页面和 iframe 位于不同的域中,因此我使用 window.postMessage 进行相互通信。
这是parent.htm的代码:
<html>
<head>
<script>
if (window.addEventListener){
window.addEventListener("message",getMessage,false);
} else if (window.XMLHttpRequest){
window.attachEvent("onmessage",getMessage);
}
function getMessage(event){
if(event.data=="getCity"){
window.myIframe.postMessage("London","*");
}
}
</script>
</head>
<body>
<div style="height:100%;width:100%">
<iframe name="myIframe" src="child.htm"></iframe>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
以及child.htm的代码
<html>
<head>
<script>
if (window.addEventListener){
window.addEventListener("message",getValue,false);
} else if (window.XMLHttpRequest){
window.attachEvent("onmessage",getValue);
}
var returnValue="";
function getValue(event){
returnValue=event.data;
}
function getCityFromTop(){
top.postMessage("getCity","*");
return returnValue;
}
</script>
</head>
<body>
<a href="javascript:alert(getCityFromTop())">Get city from top</a>
<br/>
<a href="javascript:alert(returnValue)">Show city after …Run Code Online (Sandbox Code Playgroud)