Após o aviso de @ DavidPostill, olhei novamente para a estrutura da página. Parece que os anúncios de texto são movidos para fora de div.spon_links
quando o Adblock Edge está ativado, o que realmente possui uma regra de filtragem spon_links
. Se isso é um mau comportamento do Adblock Edge ou alguma ação contrária do Startpage, não sei.
Existe uma solução mais simples do que adicionar um script Greasemonkey personalizado - simplesmente trocar o Adblock Edge pelo uBlock também resolveu o problema.
Em uma investigação mais aprofundada, os anúncios desaparecem apenas com o uBlock ativado quando o Adblock Edge está totalmente desativado ao mesmo tempo ("Desativar em qualquer lugar"). Mesmo se eu desativá-lo apenas para o Startpage ("Desativar no startpage.com"), o site moverá os anúncios para fora do spon_links
contêiner. Minha explicação é que o Startpage de alguma forma consegue acessar minhas preferências de Complementos e verifica se o Adblock geralmente está ativado . Poderia ser tão desagradável ?!
Usando a abordagem de David de Greasemonkey e removeChild
, eu vim com a seguinte solução que ainda funciona quando o Adblock Edge está instalado. Parece que é preciso esperar até que a página carregue e brinque, evitando o bloco de anúncios, até que você possa finalmente localizar e excluir os 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);
(Desculpe, meu JavaScript está um pouco enferrujado, provavelmente mais fácil com o jQuery.)