Siguiendo el aviso de @ DavidPostill, volví a mirar la estructura de la página. Parece que los anuncios de texto se mueven fuera de div.spon_links
cuando Adblock Edge está habilitado, lo que de hecho tiene una regla de filtrado spon_links
. Si esto es un mal comportamiento de Adblock Edge o alguna acción contraria de Startpage, no lo sé.
Hay una solución más simple que agregar un script personalizado de Greasemonkey: simplemente intercambiar Adblock Edge por uBlock también resolvió el problema.
En una investigación adicional, los anuncios solo desaparecen con uBlock habilitado cuando Adblock Edge está completamente deshabilitado al mismo tiempo ("Deshabilitar en todas partes"). Incluso si lo deshabilito solo para Startpage ("Deshabilitar en startpage.com"), el sitio mueve los anuncios fuera del spon_links
contenedor. Mi explicación es que Startpage de alguna manera logra acceder a mis preferencias de Complementos y comprueba si Adblock generalmente está habilitado . ¿Podría ser tan desagradable?
Usando el enfoque de David de Greasemonkey y removeChild
, se me ocurrió la siguiente solución que todavía funciona cuando Adblock Edge está instalado. Parece que uno tiene que esperar hasta que la página se haya cargado y jugado evitando el bloqueo de anuncios, hasta que finalmente pueda ubicar y eliminar los elementos ofensivos:
// ==UserScript==
// @name startpage/ixquick remove ads
// @namespace startpage.com
// @description Removes ads from startpage/ixquick before they are displayed.
// @include https://startpage.com/*
// @include https://*.startpage.com/*
// @include https://ixquick.com/*
// @include https://*.ixquick.com/*
// @run-at document-end
// @grant none
// @version 2015-09-29
// ==/UserScript==
var fun = function() {
var results = document.getElementById('bottom-result-container');
if (results) {
var ols = results.getElementsByTagName('ol');
for (i = 0; i < ols.length; i++) {
var ol = ols[i];
var ps = ol.getElementsByTagName('p');
for (j = 0; j < ps.length; j++) {
var p = ps[j];
if (p.className == 'head2') {
var spans = p.getElementsByTagName('span');
for (k = 0; k < spans.length; k++) {
if (spans[k].innerHTML.contains("Ads related to")) {
ol.innerHTML = '';
}
}
}
}
}
}
};
setTimeout(fun, 1);
(Lo siento, mi JavaScript está un poco oxidado, probablemente más fácil con jQuery).