如何更改页面中的所有链接?

时间:2013-10-14 14:31:07

标签: javascript google-chrome hyperlink userscripts

对于此类IP-direct,Google搜索的网页:

http://62.0.54.118/search?&q=42&oq=42&sourceid=chrome&ie=UTF-8&filter=0


如何将该页面中的所有链接从search?q更改为search?&q=

例如,我想建立链接:

http://62.0.54.118/search?q=42&ei=Xf5bUqHLOKeQ0AWV4YG4Cg&start=10&sa=N&filter=0

成:

http://62.0.54.118/search?&q=42&ei=Xf5bUqHLOKeQ0AWV4YG4Cg&start=10&sa=N&filter=0


如何让Chrome通过自动脚本或类似的方式更改链接?

3 个答案:

答案 0 :(得分:1)

这是一个可能适合您的正则表达式:

var url = 'http://62.0.54.118/search?q=42&oq=42&sourceid=chrome&ie=UTF-8&filter=0'
var regex = /(http:\/\/.*?search\?)(.*)/
console.log( url.replace(regex, '$1&$2') )

// 'http://62.0.54.118/search?&q=42&oq=42&sourceid=chrome&ie=UTF-8&filter=0'

您需要遍历页面中的所有网址并将其应用于每个网址。

您是否需要帮助修改目标页面中的HTML,或者您是否可以从此处获得解决方案?

答案 1 :(得分:1)

要在静态页面上更改这些链接(例如您的示例):

  1. 搜索适用的链接。
  2. 循环链接并更改它们。 (通常使用正则表达式。)
  3. 完整的用户名希望如下:

    // ==UserScript==
    // @name     _Modify select Google search links
    // @include  http://YOUR_SERVER.COM/YOUR_PATH/*
    // @include  http://62.0.54.118/*
    // ==/UserScript==
    
    var qLinks  = document.querySelectorAll ("a[href*='?q=']");
    
    for (var J = qLinks.length - 1;  J >= 0;  --J) {
        var oldHref = qLinks[J].getAttribute ('href');
        var newHref = oldHref.replace (/\?q=/, "?&q=");
    
        //console.log (oldHref + "\n" + newHref);
        qLinks[J].setAttribute ('href', newHref);
    }
    


    将文件另存为GoogleLinkModify.user.js,然后drag it to the extensions page to install。 (或者安装the Tampermonkey extension并通过Tampermonkey安装脚本。)


    重要的:

    1. 对于AJAX驱动的页面,请安装Tampermonkey和use waitForKeyElements()
    2. Google网页是PITA脚本。请注意,即使您更改href,许多Google网页也会忽略这一点,并且在点击链接时也会偷偷地重定向链接。有关详细信息,请参阅或打开其他问题。

答案 2 :(得分:0)

简洁的单行内容,可以书写为scriplet:

javascript:for(i in dl=document.links)dl[i].href=dl[i].href.replace(/(http:.*search[?])(q=.*)/,'$1&$2')

即。一种观察遍历的SO链接的简单方法,无论是相关的还是链接的或原始的,无论如何:

javascript:for(i in dl=document.links)dl[i].href=dl[i].href.replace(/[?].q=1/,"")