我试图在单个父页面上使用两个 easyXDM 套接字但没有成功。两个套接字都连接到同一个远程域,但端点不同。父页面有两个 divfalse_app_div
和dummy_app_div
. 下面显示了代码片段 -
在父页面上,我有两个 JS 函数activate_false_app()
和activate_dummy_app()
.
window.loadScript = function(src, onload, onerror) {
var head = document.getElementByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = src;
if (script.readyState) {
script.onreadystate = function() {
var state = this.state;
if (state === 'loaded' || state === 'complete') {
script.onreadystate = null;
onload();
}
};
}
};
window.activate_false_app = function() {
var exdm_url = 'http://localhost:8000/js/easyXDM/easyXDM.min.js';
on_load_fn = function() {
window.init_false_app_communication();
};
on_error_fn = function() {
return false;
};
window.loadScript(exdm_url, on_load_fn, on_error_fn);
};
window.init_false_app_communication = function() {
var false_app_socket = new easyXDM.Socket({
remote : 'http://localhost:8000/false_app',
swf : 'http://localhost:8000/js/easyXDM/easyXDM.swf',
container : 'false_ap_div',
onMessage : function(message, origin) {
alert('false_app onMessage');
alert(message);
}
});
};
window.activate_dummy_app = function() {
var exdm_url = 'http://localhost:8000/js/easyXDM/easyXDM.min.js';
on_load_fn = function() {
window.init_dummy_app_communication();
};
on_error_fn = function() {
return false;
};
window.loadScript(exdm_url, on_load_fn, on_error_fn);
};
window.init_dummy_app_communication = function() {
var dummy_app_socket = new easyXDM.Socket({
remote : 'http://localhost:8000/dummy_app',
swf : 'http://localhost:8000/js/easyXDM/easyXDM.swf',
container : 'dummy_app_div',
onMessage : function(message, origin) {
alert('dummy_app onMessage');
alert(message);
};
});
};
如果在父页面中,我调用activate_dummy_app()
or activate_false_app()
,它可以工作 - 这两者都可以单独工作。但是,如果我同时调用两者,那么它们中只有一个可以工作,并且我在 JS 控制台上收到一个错误,即某些东西是未定义的(我找不到)。
另外,我知道问题与加载两个easyXDM有关,因为如果我放入init_dummy_app_communication
of on_load_fn
(activate_false_app()
除了init_false_app_communication
已经存在的),那么两者都可以。
但是,我不能确定 easyXDM 是否已经加载,所以两者activate_false_app
都activate_dummy_app
必须加载 easyXDM,这样它们才能独立工作,也可以一起工作。我尝试使用noConflict
函数,但那里的文档很差,最终没有具体的内容。
有人遇到过类似的问题或知道我在这里缺少什么吗?