@DavidPostillの通知に従って、ページ構造をもう一度確認しました。div.spon_links
Adblock Edgeが有効な場合、テキスト広告はの外に移動されているようですspon_links
。これがAdblock Edgeの誤動作なのか、Startpageからの反作用なのかはわかりません。
カスタムのGreasemonkeyスクリプトを追加するよりも簡単な解決策があります。uBlockのAdblock Edgeを交換するだけで問題も解決しました。
さらなる調査では、Adblock Edgeが同時に完全に無効になっている場合(「どこでも無効にする」)にuBlockが有効になっている場合にのみ広告が消えます。スタートページのみを無効にしても(「startpage.comで無効にする」)、サイトは広告をspon_links
コンテナの外に移動します。私の説明は、スタートページがなんとかアドオンの設定にアクセスして、Adblockが一般的に有効になっているかどうかを確認することです。そんなに厄介なのでしょうか?
Davidの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を使用すると簡単になります。)