Проставление 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}'} );`);
    }
}

→ Ссылка