Проставление onClick на ссылки при загрузке страницы с помощью JS
Есть задача, проставить Event для некоторых ссылок. Решил закрыть задачу с помощью JS. Вот что у меня получилось. Осталось распарсить ссылку и передать название файла (первый if) или SKU (второй if) в Event. При этом, второй if в таком исполнении работает.
for (let elem of document.getElementsByTagName('a')) {
if (elem.matches('a[href$="pdf"]')) {
elem.setAttribute("onclick", "amplitude.getInstance().logEvent('download_file', { type: 'pdf', reference: '%file_name%'} );");
}
if (elem.matches('a[href$="https://site.com/shop/"]')) {
elem.setAttribute("onclick", "amplitude.getInstance().logEvent('shop_click', { type: 'link', reference: '%SKU%'} );");
}
}
Подскажите, как реализовать передачу параметра в Event.
Ответы (1 шт):
Автор решения: Ein
→ Ссылка
Для парсинга нужных значений можно воспользоваться регулярными выражениями.
К сожалению, вы не уточнили откуда именно берётся SKU, поэтому пример только для первого if
for (let elem of document.getElementsByTagName('a')) {
if (elem.matches('a[href$="pdf"]')) {
// берём последнюю часть url
// Пример работы регулярного выражения: https://regex101.com/r/dAK6Fa/1
let filename = elem.href.match(/.*(\/|^)(.+?\.pdf)/)[2];
// обращаю внимание на смену кавычек " -> `
elem.setAttribute("onclick", `amplitude.getInstance().logEvent('download_file', { type: 'pdf', reference: '${filename}'} );`);
}
}