82 lines
2.4 KiB
JavaScript
82 lines
2.4 KiB
JavaScript
var data = require("sdk/self").data;
|
|
var Request = require("sdk/request").Request;
|
|
var tabs = require("sdk/tabs");
|
|
var system = require("sdk/system");
|
|
if (system.platform !== 'android') {
|
|
// Clipboard is not supported on Android
|
|
var clipboard = require("sdk/clipboard");
|
|
}
|
|
var pageMod = require("sdk/page-mod");
|
|
pageMod.PageMod({
|
|
include: ["*.4chan.org", "*.4cdn.org"],
|
|
contentScriptFile: data.url("greaseshim.js"),
|
|
contentScriptWhen: "start",
|
|
onAttach: function(worker) {
|
|
worker.port.emit("load-userscript", data.load("4chan-X.user.js"));
|
|
|
|
//GM_openInTab
|
|
worker.port.on("GM_openInTab", function(url) {
|
|
tabs.open(url);
|
|
});
|
|
|
|
//GM_setClipboard
|
|
worker.port.on("GM_setClipboard", function(text) {
|
|
if (system.platform !== 'android') {
|
|
// Clipboard is not supported on Android
|
|
clipboard.set(text);
|
|
}
|
|
});
|
|
|
|
//GM_xmlhttpRequest
|
|
worker.port.on("GM_xmlhttpRequest", function(details) {
|
|
request = new Object();
|
|
request.url = details.url;
|
|
if (details.headers) {
|
|
request.headers = details.headers;
|
|
if (details.headers["Content-Type"]) {request.contentType = details.headers["Content-Type"]};
|
|
};
|
|
if (details.data) {request.content = encodeURIComponent(details.data)};
|
|
if (details.overrideMimeType) {request.overrideMimeType = details.overrideMimeType};
|
|
|
|
request.onComplete = function(response) {
|
|
response.finalUrl = details.url;
|
|
response.responseText = response.text;
|
|
for (var headerName in response.headers) {
|
|
_string = headerName + ": " + response.headers[headerName] + " \n";
|
|
response.responseHeaders += _string;
|
|
}
|
|
response.readyState = 4;
|
|
worker.port.emit("callback_GM_xmlhttpRequest", response);
|
|
}
|
|
|
|
xhr = Request(request);
|
|
|
|
switch(details.method){
|
|
case "GET":
|
|
xhr.get();
|
|
break;
|
|
case "POST":
|
|
xhr.post();
|
|
break;
|
|
case "HEAD":
|
|
xhr.head();
|
|
break;
|
|
case "PUT":
|
|
xhr.put();
|
|
break;
|
|
default: xhr.get();
|
|
}
|
|
});
|
|
|
|
//GM_addStyle
|
|
worker.port.on("GM_addStyle", function(css) {
|
|
tabs.activeTab.attach({
|
|
contentScript: "var style = document.createElement('style');" +
|
|
"style.type = 'text/css';" +
|
|
"style.innerHTML = '" + css + "';" +
|
|
"document.head.appendChild(style);"
|
|
});
|
|
});
|
|
|
|
}
|
|
}); |