Próbuję użyć dwóch gniazd easyXDM na jednej stronie nadrzędnej bez powodzenia. Oba gniazda łączą się z tą samą zdalną domeną, ale z różnymi punktami końcowymi. Strona rodzic ma dwie DIV false_app_div
i dummy_app_div
.Powierzchnia Poniżej przedstawiono fragmenty kodu -Wiele easyXDM na jednej stronie
na stronie nadrzędnej Mam dwie funkcje JS activate_false_app()
i 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);
};
});
};
Jeśli na stronie macierzystej wzywam albo activate_dummy_app()
lub activate_false_app()
, to działa - czyli jak działa całkowicie prawidłowo w izolacji. Ale jeśli zadzwonię do obu, wtedy tylko jeden z nich działa i dostaję błąd na konsoli JS, że coś jest niezdefiniowane (czego nie mogłem znaleźć).
Również wiem, że problem ma coś wspólnego z załadunkiem dwa easyXDMs ponieważ jeśli mogę umieścić w on_load_fn
init_dummy_app_communication
z activate_false_app()
(oprócz init_false_app_communication
już obecne), to zarówno prace.
Jednak nie mogę być pewien, że easyXDM jest już załadowany, więc zarówno activate_false_app
, jak i activate_dummy_app
musi załadować easyXDM, aby działały zarówno w izolacji, jak i razem. Próbowałem pracować z funkcją noConflict
, ale dokumentacja jest słaba i skończyło się na niej nic konkretnego.
Czy ktoś napotkał podobny problem lub wie, czego tu brakuje?