Модификация ссылок на лету в соответствии с набором правил (Greasekit / Javascript)

У меня есть 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 - мужик, этот язык сложный! Это кажется чрезвычайно сложным. Я был бы очень признателен за любую помощь / указатели.

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/

Другие вопросы по тегам