【发布时间】:2014-08-20 00:53:11
【问题描述】:
我正在尝试在客户端的两个网站之间建立一个数据交换系统。我为此使用 EasyXDM。 (http://easyxdm.net/)。这是我的父网站代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>EasyXDM Test</title>
<script type="text/javascript" src="easyXDM.debug.js"></script>
<script type="text/javascript">
var serv_socket = new easyXDM.Socket({
remote: "http://localhost:39452/EasyXDM/Default.aspx",
onMessage: function (message, origin) {
document.getElementById('msg').innerText="Received '" + message + "' from '" + origin + "'";
},
onReady: function () {
serv_socket.postMessage("ID");
}
});
</script>
</head>
<body>
<form id="form1">
<div>
<iframe src="http://localhost:39452/EasyXDM/Default.aspx"></iframe>
<input type="text" id="msgtext" /><a href="#" onclick="serv_socket.postMessage('d')">Send message</a>
<div id="msg"></div>
</div>
</form>
</body>
</html>
下面是位于localhost:39452域的子网站代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Server</title>
</head>
<body>
<form id="form1">
<input type="text" id="msgtext" />
<div>
<script type="text/javascript" src="easyXDM.debug.js"></script>
<script type="text/javascript">
var socket = new easyXDM.Socket({
onMessage: function (message, origin) {
//document.getElementById('msg').innerText="Received '" + message + "' from '" + origin + "'";
socket.postMessage(message);
},
onReady: function (msg) {
socket.postMessage(msg);
}
});
function send() {
socket.postMessage('this is message from server');
}
</script>
<a href="#" id="sender" onclick="send()">Send message</a>
</div>
</form>
</body>
</html>
问题是,当我在子网站上单击Send message 并调用socket.postMessage() 时,它会显示Uncaught TypeError: Cannot read property 'postMessage' of undefined.。请告诉我如何解决这个问题?
更新:socket 以某种方式变为 null 或未定义。
【问题讨论】:
-
在点击发送之前,您是否在页面加载时检查了套接字是否已正确初始化?你的脚本标签不应该在头部吗?
-
@rob 感谢您的回复。我终于找到了答案并发布了它。看看这个。 :)
标签: javascript jquery html easyxdm