HTML5网络消息-在本地不起作用

HTML5网络消息-在本地不起作用,html,iframe,cross-domain,Html,Iframe,Cross Domain,我正在玩HTML5网络信息。我只是尝试了一个简单的例子,跨站点发送一条消息。当将其发送到公共站点时(参见下面的示例-iframe的jsbin地址),它可以工作,但如果我使用本地计算机上部署的代码(与jsbin上的代码相同)(网页设置为http://192.168.1.20/web_messaging/b.html) 我使用超时来准备iframe,故意跳过原点检查(用于测试) 你知道什么是错的吗 “客户”代码: var win=document.getElementById(“iframe”).

我正在玩HTML5网络信息。我只是尝试了一个简单的例子,跨站点发送一条消息。当将其发送到公共站点时(参见下面的示例-iframe的jsbin地址),它可以工作,但如果我使用本地计算机上部署的代码(与jsbin上的代码相同)(网页设置为
http://192.168.1.20/web_messaging/b.html

我使用超时来准备iframe,故意跳过原点检查(用于测试)

你知道什么是错的吗

“客户”代码:


var win=document.getElementById(“iframe”).contentWindow;
setTimeout(函数()
{win.postMessage('Hello111',”http://jsbin.com");}, 2000);
//win.postMessage('Hello100',”http://192.168.1.20");
WMTest-A2

真正的问题是在localserver案例中并没有结束iframe标记,所以并没有执行javascript来发送消息。下面的代码在本地仅适用于IP(没有域名)

b、 html

<!DOCTYPE html>
<meta charset="utf-8" />
<!-- <iframe id="iframe" src="http://jsbin.com/eKUguFO/1"></iframe>  -->

<iframe id="iframe" src="http://xx.xx.xx.2/web_messaging/c.html"> </iframe>
<script language="javascript" type="text/javascript">

var win = document.getElementById("iframe").contentWindow;

window.setTimeout(function() {
win.postMessage('Hello111!!!', "http://xx.xx.xx.2");
//win.postMessage('Hello100', "http://a.test.com");
}, 2000);

//win.postMessage('Hello100', "http://192.168.1.20");

</script>
 <h2>WMTest - A2</h2> 
<div id="output"></div>
</html>

var win=document.getElementById(“iframe”).contentWindow;
setTimeout(函数(){
win.postMessage('Hello111!!!')http://xx.xx.xx.2");
//win.postMessage('Hello100',”http://a.test.com");
}, 2000);
//win.postMessage('Hello100',”http://192.168.1.20");
WMTest-A2
c、 html

<!DOCTYPE html>
<html>
<head>
<title>.postMessage target</title>
<style>
body { 
  font: normal 16px/20px Helvetica, sans-serif;
  margin: 0;
  padding: 20px;
}


</style>
</head>
<body>
<strong>This iframe is located on jsbin.com (different domain)</strong>
<p id="test">Send me a message!</p>
<script>
window.onmessage = function(e){
  if ( e.origin !== "http://anydomain.com" ) {
    //return;
  }

  document.getElementById("test").innerHTML = e.origin + " said: " + e.data;
};
</script>
</body>
</html>

.postMessage目标
正文{
字体:普通16px/20px Helvetica,无衬线;
保证金:0;
填充:20px;
}
此iframe位于jsbin.com(不同域)

给我发个短信

window.onmessage=函数(e){ 如果(例如,原点!==”http://anydomain.com" ) { //返回; } document.getElementById(“test”).innerHTML=e.origin+“表示:”+e.data; };
真正的问题是在localserver案例中并没有结束iframe标记,所以并没有执行javascript来发送消息。下面的代码在本地仅适用于IP(没有域名)

b、 html

<!DOCTYPE html>
<meta charset="utf-8" />
<!-- <iframe id="iframe" src="http://jsbin.com/eKUguFO/1"></iframe>  -->

<iframe id="iframe" src="http://xx.xx.xx.2/web_messaging/c.html"> </iframe>
<script language="javascript" type="text/javascript">

var win = document.getElementById("iframe").contentWindow;

window.setTimeout(function() {
win.postMessage('Hello111!!!', "http://xx.xx.xx.2");
//win.postMessage('Hello100', "http://a.test.com");
}, 2000);

//win.postMessage('Hello100', "http://192.168.1.20");

</script>
 <h2>WMTest - A2</h2> 
<div id="output"></div>
</html>

var win=document.getElementById(“iframe”).contentWindow;
setTimeout(函数(){
win.postMessage('Hello111!!!')http://xx.xx.xx.2");
//win.postMessage('Hello100',”http://a.test.com");
}, 2000);
//win.postMessage('Hello100',”http://192.168.1.20");
WMTest-A2
c、 html

<!DOCTYPE html>
<html>
<head>
<title>.postMessage target</title>
<style>
body { 
  font: normal 16px/20px Helvetica, sans-serif;
  margin: 0;
  padding: 20px;
}


</style>
</head>
<body>
<strong>This iframe is located on jsbin.com (different domain)</strong>
<p id="test">Send me a message!</p>
<script>
window.onmessage = function(e){
  if ( e.origin !== "http://anydomain.com" ) {
    //return;
  }

  document.getElementById("test").innerHTML = e.origin + " said: " + e.data;
};
</script>
</body>
</html>

.postMessage目标
正文{
字体:普通16px/20px Helvetica,无衬线;
保证金:0;
填充:20px;
}
此iframe位于jsbin.com(不同域)

给我发个短信

window.onmessage=函数(e){ 如果(例如,原点!==”http://anydomain.com" ) { //返回; } document.getElementById(“test”).innerHTML=e.origin+“表示:”+e.data; };
我确实尝试过,但没有成功。我修改了hosts文件(验证了双方都可以访问域),但没有任何帮助。这个例子对你有用吗?(你可以复制代码jsbin并在本地运行load)哦,我真傻,我没有注意到!现在它运行良好,非常感谢您的帮助!:)我使用firebug查看生成的HTML,发现在IFRAME之后没有代码。我尝试过,但没有成功。我修改了hosts文件(验证了双方都可以访问域),但没有任何帮助。这个例子对你有用吗?(你可以复制代码jsbin并在本地运行load)哦,我真傻,我没有注意到!现在它运行良好,非常感谢您的帮助!:)我使用firebug查看生成的HTML,发现在IFRAME之后没有代码。