2013-01-25 35 views
0

我想解析文档中的所有HTML,并且如果存在指向PDF的链接,请添加onClick事件。如果链接到PDF,JavaScript解析href并添加onclick

实施例:

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

变为:

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

下面的代码工作在铬/火狐但不能在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;文档模式:

+0

更新Q的细节:浏览器模式:IE9;文档模式:IE9标准 –

+1

不要添加'onclick'。添加一个事件监听器。它可能有帮助。 –

+0

所以类似links [i] .addEventListener(“click”,“javascript:_gaq.push(['_trackPageview','”+ links [i] .href +''));“,false); ? –

回答

4

使用jQuery,你会不会通过浏览器(IE特)

$('a[href~=.pdf]').click(function(e) { 
    // your click action 
    // e is a jQuery event 
    // your <a> element is the variable this 
}); 
3

不是增加一个属性的IE9标准,附加一个事件处理

if (links[i].attachEvent){ 
    links[i].attachEvent('onclick', tpv); 
} 
else{ 
    links[i].addEventListener('click', tpv); 
} 
function tpv(){ 
    _gaq.push(['_trackPageview', '" + this.href + "']); 
} 
+0

我宁愿将AEL分支到各个分支(如果可能的话):-() –

+0

链接[i] .onClick = ...'是否有问题? – Jeff

+1

@Jeff如果与字符串一起使用.. 。是的,如果与功能一起使用...是的,你仍然覆盖以前的处理程序 –

2

的限制jQuery语句来完成这将看起来像:

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

我很喜欢Nannuo雷的答案t他的问题,但解决方案不完全准确/完整,我还没有足够的声誉评论这个职位。

您将需要围绕正在搜索的字符串引号,并且* =选择符允许您标识较大字符串的子字符串,而不仅仅是由〜=选择器完成的由空格分隔的单词。关于jQuery选择器的更多细节可以在这里找到:https://api.jquery.com/category/selectors/