Я хотел бы проанализировать весь HTML-код в документе и, если есть ссылка на PDF-файл, добавить событие onClick.

Примере:

<a href="/files/report.pdf">Report</a>

Становится :

<a href="/files/report.pdf" onclick="javascript: _gaq.push(['_trackPageview', '/files/report.pdf']);">Report</a>

Следующий код работает в Chrome / Firefox, но не в IE9:

function AddGaqPush()
    {
        var links = document.getElementsByTagName("a");

        for (var i=0; i < links.length; i++)
        {
            if (links[i].href.indexOf(".pdf") !== -1)
            {
                links[i].setAttribute("onclick", "javascript: _gaq.push(['_trackPageview', '" + links[i].href + "']);");
            }
        }
    }

Отредактировано, чтобы добавить: настройки IE: режим браузера: IE9; Режим документа: стандарты IE9

0
Charles Wesley 25 Янв 2013 в 04:16

3 ответа

Лучший ответ

Используйте jQuery, и вы не будете ограничены браузером (особенно IE)

$('a[href~=.pdf]').click(function(e) {
    // your click action
    // e is a jQuery event
    // your <a> element is the variable this
});
4
Leo supports Monica Cellio 25 Янв 2013 в 00:26

Оператор jQuery для выполнения этого будет выглядеть так:

$('a[href*=".pdf"]').click(function(e) {
    _gaq.push(['_trackPageview', $(this).attr('href')]);
});

Мне понравился ответ Nannuo Lei на этот вопрос, но решение не было достаточно точным / полным, и у меня пока нет достаточной репутации, чтобы комментировать этот пост.

Вам понадобятся кавычки вокруг искомой строки, а селектор * = позволяет идентифицировать подстроку большей строки, а не просто слово, разделенное пробелом, как будет выполнено селектор ~ =. Более подробную информацию о селекторах jQuery можно найти здесь: https://api.jquery.com/category/selectors/

2
zerodega 11 Ноя 2014 в 01:08

Вместо добавления атрибута прикрепите обработчик события

if (links[i].attachEvent){
    links[i].attachEvent('onclick', tpv);
}
else{
    links[i].addEventListener('click', tpv);
}
function tpv(){
    _gaq.push(['_trackPageview', '" + this.href + "']);
}
3
Musa 25 Янв 2013 в 00:24