Nach dem Hinweis von @ DavidPostill habe ich mir die Seitenstruktur noch einmal angesehen. Es scheint, dass die Textanzeigen außerhalb von verschoben werden, div.spon_links
wenn Adblock Edge aktiviert ist, für das tatsächlich eine Filterregel gilt spon_links
. Ob dies ein Fehlverhalten von Adblock Edge oder eine Gegenmaßnahme von Startpage ist, weiß ich nicht.
Es gibt eine einfachere Lösung als das Hinzufügen eines benutzerdefinierten Greasemonkey-Skripts. Durch einfaches Austauschen von Adblock Edge gegen uBlock wurde das Problem ebenfalls gelöst.
Bei weiteren Untersuchungen verschwinden die Anzeigen nur bei aktiviertem uBlock, wenn Adblock Edge gleichzeitig vollständig deaktiviert ist ("Überall deaktivieren"). Selbst wenn ich es nur für Startpage deaktiviere ("Auf startpage.com deaktivieren"), verschiebt die Site die Anzeigen außerhalb des spon_links
Containers. Meine Erklärung ist, dass Startpage irgendwie auf meine Add-On-Einstellungen zugreifen kann und prüft, ob Adblock generell aktiviert ist . Könnte es so böse sein?!
Unter Verwendung von Davids Ansatz von Greasemonkey und habe removeChild
ich die folgende Lösung gefunden, die auch bei der Installation von Adblock Edge funktioniert. Es scheint, dass man warten muss, bis die Seite geladen und herumgespielt wurde, um Werbeblocker zu vermeiden, bis man die beleidigenden Elemente endlich finden und löschen kann:
// ==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);
(Entschuldigung, mein JavaScript ist etwas verrostet, wahrscheinlich einfacher mit jQuery.)