0

我想解析文档中的所有 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标准

4

3 回答 3

4

使用jQuery,你不会被浏览器限制(尤其是IE)

$('a[href~=.pdf]').click(function(e) {
    // your click action
    // e is a jQuery event
    // your <a> element is the variable this
});
于 2013-01-25T00:26:58.307 回答
3

不添加属性,而是附加事件处理程序

if (links[i].attachEvent){
    links[i].attachEvent('onclick', tpv);
}
else{
    links[i].addEventListener('click', tpv);
}
function tpv(){
    _gaq.push(['_trackPageview', '" + this.href + "']);
}
于 2013-01-25T00:24:18.007 回答
2

完成此操作的 jQuery 语句如下所示:

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

我喜欢 Nannuo Lei 对这个问题的回答,但解决方案不是很准确/完整,我还没有足够的声誉来评论那个帖子。

您需要在要搜索的字符串周围加上引号,并且 *= 选择器允许您识别较大字符串的子字符串,而不仅仅是 ~= 选择器将完成的由空格分隔的单词。可以在此处找到有关 jQuery 选择器的更多详细信息:https ://api.jquery.com/category/selectors/

于 2014-11-11T01:08:20.997 回答