Модификация ссылок на лету в соответствии с набором правил (Greasekit / Javascript)
У меня есть HTML-страница с множеством записей вроде этого:
<a href="https://www.example.co.uk/gp/wine/product?ie=UTF8&asin=123456789&tab=UK_Default" class="PrmryBtnMed"
Я хочу заменить все эти ссылки, чтобы они были:
https://www.example.co.uk/gp/wine/order?ie=UTF8&asin=1233456789
Так что это довольно сложный поиск и замена. Вот инструкции для человека:
- Посмотрите на URL. Запишите только число после "asin=". (Забудь все до этого и все после этого)
- Затем создайте новый 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]);
}
}