Mengikuti pemberitahuan DavidPostill, saya melihat kembali struktur halaman. Tampaknya iklan teks dipindahkan di luar div.spon_links
saat Adblock Edge diaktifkan yang memang memiliki aturan penyaringan spon_links
. Apakah ini adalah kelakuan buruk Adblock Edge atau tindakan balasan dari Startpage, saya tidak tahu.
Ada solusi yang lebih sederhana daripada menambahkan skrip Greasemonkey khusus — cukup dengan menukar Adblock Edge untuk uBlock juga menyelesaikan masalah.
Pada penyelidikan lebih lanjut, iklan hanya menghilang dengan uBlock diaktifkan ketika Adblock Edge sepenuhnya dinonaktifkan pada saat yang sama ("Nonaktifkan di mana-mana"). Bahkan jika saya menonaktifkannya hanya untuk Startpage ("Disable on startpage.com"), situs tersebut memindahkan iklan di luar spon_links
wadah. Penjelasan saya adalah bahwa Startpage entah bagaimana berhasil mengakses preferensi Pengaya saya dan memeriksa apakah Adblock secara umum diaktifkan . Mungkinkah seburuk itu ?!
Menggunakan pendekatan David dari Greasemonkey dan removeChild
, saya datang dengan solusi berikut yang masih berfungsi ketika Adblock Edge diinstal. Tampaknya seseorang harus menunggu sampai halaman telah dimuat dan bermain-main dengan menghindari blok iklan, sampai Anda akhirnya dapat menemukan dan menghapus elemen yang menyinggung:
// ==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);
(Maaf, JavaScript saya agak berkarat, mungkin lebih mudah dengan jQuery.)