如何在 Firefox 上禁用脚本的情况下持续突出显示访问过的 Google 搜索链接?

如何在 Firefox 上禁用脚本的情况下持续突出显示访问过的 Google 搜索链接?

我喜欢在禁用 JavaScript 的情况下使用 Google。我以前是通过在搜索字符串中添加运算符来实现这一点的gbv=1,但现在 Google 添加了强制重新加载搜索结果页面的脚本,并将参数更改为gbv=2,从而启用 JS。

因此,我开始在 Google 上屏蔽脚本(使用扩展程序 uBlock Origin)。不幸的是,这会禁用一个重要功能:我访问的任何链接都只是在结果页面上暂时标记为已访问。如果我重新加载结果页面,或者(更现实的情况)稍后在对略有不同的术语进行新的搜索时遇到一些相同的结果,我已经查看过的结果与我从未见过的结果一样蓝。

这似乎是因为 Google 重定向搜索结果的方式。例如,今天我搜索了“css semicolon”,第二个结果的 URL 显示为

stackoverflow.com/questions/2406717/semicolon-in-css

但实际链接是

https://encrypted.google.com/url?q=http://stackoverflow.com/questions/2406717/semicolon-in-css&sa=U&ved=0ahUKEwiT0siQ567RAhWqj1QKHQWlDz8QFggbMAE&usg=AFQjCNFbK1Fld5AALqyb6B2c6Y0dFzvgIA

每次重新加载结果页面时,查询字符串中字段的内容似乎ved都会重新生成。可能这就是为什么访问过的链接不再突出显示的原因——因为从技术上讲,我之前没有访问过它们。

许多扩展用户脚本已经创建了一些工具来解决这个问题,但是我发现所有的工具都是设计用于启用 JavaScript 的(它们中的大多数似乎涉及禁用 onmousedown 事件,而当 JS 被禁用时,该事件不会/不能发生)。

我怎样才能让 Google 显示我已经访问过的链接?

答案1

好吧,我不知道回答你自己的问题是否合适,但是这是我想到的答案:

function revertURL() {
    var refs = document.querySelectorAll("h3.r > a");
    for (i = 0; i < refs.length; ++i) {
    var oldurl = refs[i].href;
    var n1 = oldurl.indexOf("q=");
    var n2 = oldurl.indexOf("sa=");
    var newurl = oldurl.slice(n1 + 2, n2 - 1);
    refs[i].href = newurl;
    }
}

编辑,四天后:经过测试,我添加了使其真正发挥作用所需的括号(在函数周围和之后)。

我还扩展了定义,refs以便脚本可以处理更多类型的搜索结果:来自单个域的结果子列表、Google 缓存页面和图像搜索结果。

我添加了一行来解码该函数生成的转义字符。

(function revertURL() {
    var refs = document.querySelectorAll("h3.r > a, a.fl, span._cD > a, table.images_table a");
    for (i = 0; i < refs.length; ++i) {
    var oldurl = refs[i].href;
    var n1 = oldurl.indexOf("q=");
    var n2 = oldurl.indexOf("sa=");
    var newurl = oldurl.slice(n1 + 2, n2 - 1);
    var newurl_dec = decodeURIComponent(newurl)
    refs[i].href = newurl_dec;
    }
})();

相关内容