There are 5 previous versions of this script.
// ==UserScript==
// @name 4chan Pool's Open
// @namespace 4chan_ADS_remover
// @include *.4chan.org/*
// @description Removes the new banner adds on the top and bottom of /b/ and other boards on 4chan.org
// ==/UserScript==/
function do_4Chan_script() {
smart_remove(window.document,document.evaluate('/HTML[1]/BODY[1]/DIV[3]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,null,null,null);
smart_remove(window.document,document.evaluate('/HTML[1]/BODY[1]/CENTER[1]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,null,null,null);
smart_remove(window.document,document.evaluate('/HTML[1]/BODY[1]/FORM[1]/CENTER[1]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,null,null,null);
};
window.addEventListener("load", function() { do_4Chan_script() }, false);
var gplatypusBundle = Components.classes["@mozilla.org/intl/stringbundle;1"].getService(Components.interfaces.nsIStringBundleService);
var mystrings = gplatypusBundle.createBundle("chrome://platypus/locale/platypusCore.properties");
var platypusplatypuscouldntfi1 = mystrings.GetStringFromName("platypusplatypuscouldntfi1");
var platypusthisusuallyhappens = mystrings.GetStringFromName("platypusthisusuallyhappens");
function walk_down(node, func) {
if (node.nodeType == 1) {
if (node.tagName != "IMG") func(node);
if (node.childNodes.length != 0)
for (var i=0; i<node.childNodes.length; i++)
walk_down(node.childNodes.item(i),func);
}
}
function smart_remove(doc, node) {
if (node.parentNode.childNodes.length == 1) {
smart_remove(doc, node.parentNode);
} else {
remove_it(doc, node);
};
};
function remove_it(doc, node) {
if (doc == null || node == null) return;
if (!node.parentNode) return;
node.style.display = "none";
doc.last_removed_node = node;
};
function find_biggest_elem(doc) {
const big_element_limit = 0.25;
var size_of_doc = doc.documentElement.offsetHeight *
doc.documentElement.offsetWidth;
var body = doc.body;
var size_of_body = body.offsetHeight * body.offsetWidth;
if (size_of_body < (0.80 * size_of_doc)) {
size_of_body = size_of_doc;
};
var max_size = 0;
var max_elem = doc;
/*
var allElems = doc("//*",
doc, null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null);
Dump("allElems = "+allElems);
Dump("allElems.snapshotLength = "+allElems.snapshotLength);
for (var i = 0; i < allElems.snapshotLength; i++) {
var thisElem = allElems.snapshotItem(i);
*/
var allElems = doc.getElementsByTagName("*");
Dump("allElems = "+allElems);
Dump("allElems.snapshotLength = "+allElems.length);
for (var i = 0; i < allElems.length; i++) {
var thisElem = allElems[i];
var thisElem_size = thisElem.offsetHeight * thisElem.offsetWidth;
if (thisElem_size < size_of_body &&
thisElem_size > max_size &&
!contains_big_element(thisElem, size_of_body * big_element_limit)) {
max_size = thisElem_size;
max_elem = thisElem;
};
};
Dump("Max elem = "+max_elem.tagName);
return max_elem;
};
function contains_big_element(node, limit) {
if (node.childNodes.length != 0)
for (var i=0; i<node.childNodes.length; i++) {
var child = node.childNodes.item(i);
var child_size = child.offsetHeight * child.offsetWidth;
if (child_size > limit) return true;
};
return false;
};
function 4Chan_do(win, func_name, o, other, other2, other3) {
var func = eval(func_name);
var doc = null;
if (func == null) return;
if (!o) {
Warning(platypusplatypuscouldntfi1+
func_name+platypusthisusuallyhappens);
};
doc = win.document;
func(doc, o, other, other2, other3);
};
//.user.js