HTML5网络消息-在本地不起作用
我正在玩HTML5网络信息。我只是尝试了一个简单的例子,跨站点发送一条消息。当将其发送到公共站点时(参见下面的示例-iframe的jsbin地址),它可以工作,但如果我使用本地计算机上部署的代码(与jsbin上的代码相同)(网页设置为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”).
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之后没有代码。