Theo thông báo của @ DavidPostill, tôi nhìn lại cấu trúc trang. Dường như quảng cáo văn bản được di chuyển ra ngoài div.spon_links
khi Adblock Edge được bật, thực sự có quy tắc lọc cho spon_links
. Cho dù đây là hành vi sai trái của Adblock Edge hay một số hành động phản tác dụng từ Startpage mà tôi không biết.
Có một giải pháp đơn giản hơn là thêm một tập lệnh Greasemonkey tùy chỉnh, chỉ cần hoán đổi Adblock Edge cho uBlock cũng giải quyết được vấn đề.
Khi điều tra thêm, quảng cáo chỉ biến mất khi bật uBlock khi Adblock Edge bị vô hiệu hóa hoàn toàn cùng một lúc ("Tắt ở mọi nơi"). Ngay cả khi tôi chỉ tắt nó cho Startpage ("Vô hiệu hóa trên startpage.com"), trang web sẽ di chuyển quảng cáo bên ngoài vùng spon_links
chứa. Giải thích của tôi là Startpage bằng cách nào đó quản lý để truy cập các tùy chọn Tiện ích bổ sung của tôi và kiểm tra xem Adblock thường được bật hay không . Nó có khó chịu không?!
Sử dụng phương pháp tiếp cận Greasemonkey của David và removeChild
, tôi đã đưa ra giải pháp sau đây vẫn hoạt động khi Adblock Edge được cài đặt. Có vẻ như người ta phải đợi cho đến khi trang được tải và đùa giỡn với việc tránh chặn quảng cáo, cho đến khi cuối cùng bạn có thể định vị và xóa các yếu tố vi phạm:
// ==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);
(Xin lỗi, JavaScript của tôi hơi cũ, có thể dễ dàng hơn với jQuery.)