Created
July 27, 2008 15:17
-
-
Save mcfearsome/2781 to your computer and use it in GitHub Desktop.
Recreation of GM_ functions from GreaseMonkey for use with GreaseKit
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// GreaseKit friendly | |
// | |
if(typeof GM_xmlhttpRequest === "undefined") { | |
GM_xmlhttpRequest = function(/* object */ details) { | |
details.method = details.method.toUpperCase() || "GET"; | |
if(!details.url) { | |
throw("GM_xmlhttpRequest requires an URL."); | |
return; | |
} | |
// build XMLHttpRequest object | |
var oXhr, aAjaxes = []; | |
if(typeof ActiveXObject !== "undefined") { | |
var oCls = ActiveXObject; | |
aAjaxes[aAjaxes.length] = {cls:oCls, arg:"Microsoft.XMLHTTP"}; | |
aAjaxes[aAjaxes.length] = {cls:oCls, arg:"Msxml2.XMLHTTP"}; | |
aAjaxes[aAjaxes.length] = {cls:oCls, arg:"Msxml2.XMLHTTP.3.0"}; | |
} | |
if(typeof XMLHttpRequest !== "undefined") | |
aAjaxes[aAjaxes.length] = {cls:XMLHttpRequest, arg:undefined}; | |
for(var i=aAjaxes.length; i--; ) | |
try{ | |
oXhr = new aAjaxes[i].cls(aAjaxes[i].arg); | |
if(oXhr) break; | |
} catch(e) {} | |
// run it | |
if(oXhr) { | |
if("onreadystatechange" in details) | |
oXhr.onreadystatechange = function() { details.onreadystatechange(oXhr) }; | |
if("onload" in details) | |
oXhr.onload = function() { details.onload(oXhr) }; | |
if("onerror" in details) | |
oXhr.onerror = function() { details.onerror(oXhr) }; | |
oXhr.open(details.method, details.url, true); | |
if("headers" in details) | |
for(var header in details.headers) | |
oXhr.setRequestHeader(header, details.headers[header]); | |
if("data" in details) | |
oXhr.send(details.data); | |
else | |
oXhr.send(); | |
} else | |
throw ("This Browser is not supported, please upgrade.") | |
} | |
} | |
if(typeof GM_addStyle === "undefined") { | |
function GM_addStyle(/* String */ styles) { | |
var oStyle = document.createElement("style"); | |
oStyle.setAttribute("type", "text\/css"); | |
oStyle.appendChild(document.createTextNode(styles)); | |
document.getElementsByTagName("head")[0].appendChild(oStyle); | |
} | |
} | |
if(typeof GM_log === "undefined") { | |
function GM_log(log) { | |
if(console) | |
console.log(log); | |
else | |
alert(log); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment