После уведомления @ DavidPostill я снова посмотрел на структуру страницы. Похоже, что текстовые объявления перемещаются за пределы div.spon_links когда Adblock Edge включен, который действительно имеет правило фильтрации для spon_links . Является ли это неправильным поведением Adblock Edge или каким-либо противодействием со стартовой страницы, я не знаю.
Существует более простое решение, чем добавление пользовательского скрипта Greasemonkey - простая замена Adblock Edge на uBlock также решила проблему.
При дальнейшем расследовании реклама исчезает только при включенном uBlock, когда Adblock Edge полностью отключен одновременно ("Отключить везде"). Даже если я отключу его только для стартовой страницы («Отключить на startpage.com»), сайт переместит рекламу за пределы контейнера spon_links . Я объясняю это тем, что стартовой странице каким-то образом удается получить доступ к моим настройкам надстроек и проверить, включен ли вообще Adblock . Может ли это быть так противно ?!
Используя подход Дэвида Greasemonkey и removeChild , я придумал следующее решение, которое все еще работает, когда установлен Adblock Edge. Кажется, нужно подождать, пока страница загрузится и поиграется, избегая рекламного блока, пока вы, наконец, не сможете найти и удалить нарушающие элементы:
// ==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);
(Извините, мой JavaScript немного ржавый, возможно, проще с jQuery.)