在即时根据一组规则(Greasekit / JavaScript)的链接的修改(On-the-fly

2019-08-31 10:51发布

我有这样的条目负荷的HTML页面:

<a href="https://www.example.co.uk/gp/wine/product?ie=UTF8&amp;asin=123456789&amp;tab=UK_Default" class="PrmryBtnMed"

我想,以取代所有这些链接,这样他们反而是:

https://www.example.co.uk/gp/wine/order?ie=UTF8&asin=1233456789

所以,这是一个相当复杂的搜索和替换。 这些都是人的说明:

  1. 看看URL。 只有记数后“ASIN =”。 (忘了以后,在此之前一切,一切)
  2. 然后,形成一个新的URL,使用此ASIN。 它总是这样开始: https://www.example.co.uk/gp/wine/order?ie=UTF8&asin=

随着粘在年底形成数字:

https://www.example.co.uk/gp/wine/order?ie=UTF8&asin=123456789

请注意

  • 而不是修改现有的按钮,它也将是可接受的以添加新的按钮[或连结]附近的原始按钮
  • 原始和新的链接指向同一个域
  • 我使用Greasekit在SSB叫FluidApp,但我可以切换到的Greasemonkey在Firefox浏览器。

我刚看了40 JavaScript的教程视频 - 男人这种语言是很难! 这似乎非常困难。 我将巨大的感谢所有帮助/指针。

Answer 1:

这样的事情可能工作:

// the new base url
var base = ' https://www.example.co.uk/gp/wine/order?ie=UTF8&asin=';
// all the links with className 'PrmryBtnMed'
var links  = document.getElementsByTagName('a');

for(var i = 0;i < links.length;i++){
    // check each link for the 'asin' value
    var result = /asin=([\d\w]+)/.exec(links[i].getAttribute('href'));
    if(result){
        // make a new url using the 'base' and the 'asin' value
        links[i].setAttribute('href', base+result[1]);
    }
}

演示: http://jsfiddle.net/louisbros/L8ePL/



文章来源: On-the-fly modifications of the links according to a set of rules (Greasekit / Javascript)