MediaWiki:Gadget-Objects.js
Nota: Depois de publicar, poderá ter de contornar a cache do seu navegador para ver as alterações.
- Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)
- Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)
- Internet Explorer / Edge: Pressione Ctrl enquanto clica Recarregar, ou pressione Ctrl-F5
- Opera: Pressione Ctrl-F5.
/**
* Ver também:
* [[MediaWiki:Gadget-DeluxeHistory.js]]
* [[MediaWiki:Gadget-DeluxeHistory.css]]
* @source: [[fr:MediaWiki:Gadget-Objects.js]]
*/
var ajax = new objAJAX();
var cookies = new objCookies();
//--------------------------------------------------------------------------------------------objAJAX
function objAJAX() {
// AJAX taken from http://jibbering.com/2002/4/httprequest.html. Thanx :)
this.conn = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
try {
this.conn = new ActiveXObject("Msxml2.XMLHTTP")
} catch (e) {
try {
this.conn = new ActiveXObject("Microsoft.XMLHTTP")
} catch (E) {
this.conn = false
}
}
@end @*/
if (!this.conn && typeof XMLHttpRequest != 'undefined') {
try {
this.conn = new XMLHttpRequest();
} catch (e) {
this.conn =false;
}
}
if (!this.conn && window.createRequest) {
try {
this.conn = window.createRequest();
} catch (e) {
this.conn = false;
}
}
this.url = null;
this.requestType = "GET";
this.unsync = true;
this.parser = new objHTMLparser();
}
objAJAX.prototype.sendRequest = function (url, type, unsync, data) {
if (!this.conn)
return null;
if (this.conn.readyState != 0 && this.conn.readyState != 4)
return "busy";
if (url)
this.url = url;
if (type)
this.requestType = type;
if (unsync != null)
this.unsync = unsync;
//alert(this.requestType + " ++ " + this.url + " ++ " + this.unsync)
this.conn.open(this.requestType, this.url, this.unsync);
this.conn.send(data);
};
objAJAX.prototype.getResult = function () {
if (!this.conn)
return null;
return this.conn.responseText;
};
objAJAX.prototype.abort = function () {
this.conn.onreadystatechange = null;
this.conn.abort();
};
//------------------------------------------------------------------------------------------ObjCookie
function objCookies() {
this.value = null;
this.name = null;
this.expires = null;
}
objCookies.prototype.get = function (which) {
this.allcookies = document.cookie;
var start = this.allcookies.indexOf("; " + which + "=");
if (start == -1) {
start = this.allcookies.indexOf(which + "=");
if (start != 0)
return null;
} else
start += "; ".length;
this.name = which;
var end = this.allcookies.indexOf(";", start);
if (end == -1)
end = this.allcookies.length;
this.value = this.allcookies.substring(start + which.length + 1, end);
var arr = this.allcookies.substring(start, this.allcookies.length).split("; ");
this.expires = null;
if (arr.length > 0)
if (/expires=/.test(arr[1]))
this.expires = arr[1].substring("expires=".length, arr[1].length);
return decodeURIComponent(this.value);
};
objCookies.prototype.set = function (name, value, expires) {
document.cookie = name + "=" + encodeURIComponent(value) + ";" +
(expires ? "expires=" + expires + ";" : "") +
"path=/;domain=" + location.hostname + ";";
this.allcookies = document.cookie;
};
objCookies.prototype.setWithDelay = function (name, value, delay) {
// delay is in millisecond
var d = new Date();
d.setTime(d.getTime() + delay);
this.set(name, value, d.toGMTString());
};
objCookies.prototype.kill = function (which) {
if (this.get(which))
this.set(which, null, "Thu, 01-Jan-70 00:00:01 GMT");
};
//--------------------------------------------------------------------------------------objHTMLparser
function objHTMLparser(str) {
this.html = str;
}
objHTMLparser.prototype.parse = function (elmt, str) {
if (str !== null)
this.html = str;
if (this.html.indexOf("<" + elmt) == -1 || this.html.indexOf("</" + elmt + ">") == -1)
return null;
var arr1 = this.html.split("<" + elmt);
var elmts = [];
for (var cpt = 1 ; cpt < arr1.length ; cpt++) {
var el = {};
el.innerHTML = arr1[cpt].substring(arr1[cpt].indexOf(">"), arr1[cpt].length).split("</" + elmt)[0];
var prop = arr1[cpt].split(">")[0].split(/\s/g);
for (var cpt1 = 1 ; cpt1 < prop.length ; cpt1++) {
if (prop[cpt1].indexOf("=") != -1)
el[prop[cpt1]] = true;
else
el[prop[cpt1].split("=")[0]] = prop[cpt1].substring(prop[cpt1].indexOf("="), prop[cpt1].length);
}
elmts[cpt-1] = el;
}
this.elmts[elmt] = elmts;
};