| Current Path : /home/afacube/www/templates/afacube/javascript/ |
| Current File : /home/afacube/www/templates/afacube/javascript/xhr.js |
(function ($) {
/* Proxy pour enchainer les méthodes */
function chainProxy (baseObject) {
this._done = false;
this._error = false;
this._baseObject = baseObject;
this._type = baseObject.constructor.name;
}
chainProxy.prototype = {
doDone : function () {
this._done
},
doError : function () {
},
done : function (handler) {
this._done = handler;
return this;
},
error : function (handler) {
this._error = handler;
return this;
},
terminate : function () {
},
};
/* Retourne un objet xhr dispo selon plateforme */
function getNewXhr () {
var xhr;
if (typeof XMLHttpRequest !== 'undefined') xhr = new XMLHttpRequest();
else {
var versions = ["MSXML2.XmlHttp.5.0","MSXML2.XmlHttp.4.0","MSXML2.XmlHttp.3.0","MSXML2.XmlHttp.2.0","Microsoft.XmlHttp"];
for (var i=0, len=versions.length; i<len; i++) {
try {
xhr = new ActiveXObject(versions[i]);
break;
}
catch(e){}
}
}
return xhr;
}
function xhrWorker (url) {
var cProxy = new chainProxy (window.Worker?new Worker ('workerXHR.js'):getNewXhr());
if (cProxy._type == 'Worker') {
cProxy._baseObject.addEventListener('message', function (ev) {
if (cProxy._done) cProxy.doDone(ev.data, ev);
}, false);
workerXHR.addEventListener('error', function (ev) {
if (cProxy._error) cProxy.doError(ev.data, ev);
}, false);
}
else {
cProxy._baseObject.
}
}
})(jQuery);