在@DavidPostill发出通知之后,我再次查看了页面结构。div.spon_links
启用Adblock Edge时,似乎将文字广告移到的外部,而确实有的过滤规则spon_links
。我不知道这是Adblock Edge的不当行为还是Startpage的某些反作用。
有一个比添加自定义Greasemonkey脚本更简单的解决方案-只需将Adblock Edge换为uBlock即可解决此问题。
经过进一步调查,只有同时完全禁用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可能会更容易。)