2013-10-15 122 views
0

我们在这里遇到了一个问题:如果href不包含特定的域,这个小脚本应该编辑链接的href属性。不幸的是,当<a>元素包含<img>时,JS将查找图像的src属性,而不是a的href。 这是为什么?我只是在<a>上使用getAttribute(“href”),而不是<img>a.getAttribute(“href”)返回img src而不是href

如果<a>元素确实包含正常文本而不是<img>,它就会有效。

这是JS:

var domains = ["mysite.com", "mysite2.com"]; 
var elements = document.getElementsByTagName("a"); 
for (var i = 0; i < elements.length ; i++) 
{ 
    var notFound = 0; 
    for (var k = 0; k < domains.length; k++) //iterate over all domains defined by user 
    { 
     var found = false; 
     (elements[i].getAttribute("href").search(domains[k]) != -1) ? found = true : found = false; 
     if (!found) //not found 
     { 
      notFound++; 
     } 
    } 
    if (notFound == domains.length) //link is outbound: 
    { 
     //Set link with outbound tracking parameter 
    } 
} 

这是HTML:

<a href="http://facebook.com/38293729"> 
    <img width="100%" height="100%" src="http://mysite.com/images/fb_button.png"></img> 
</a> 

有人能解释这种现象,并为我们提供了TIPP或解决方案? 在此先感谢

+0

此链接不会直接回答你的问题但它似乎表现出很好的方式ŧ o做你想在这里做什么? http://wptheming.com/2012/01/tracking-outbound-links-with-google-analytics/ – ak85

+0

谢谢ak85。我们不允许使用jQuery。这就是我们为什么用纯JavaScript构建它的原因。 – Underlines

回答

0

这是当然的PEBKACID-10-T错误。

其中一个环节是:

<a href="http://facebook.com/38293729/?utm_source=mysite.com&utm_medium=socialbutton&utm_campaign=socialbutton"> 
<img src="http://mysite.com/facebookbutton.png"></img> 
</a> 

凡匹配的URL参数:

A HREF =“http://facebook.com/38293729/?utm_source= mysite.com & utm_medium = socialbutton & utm_campaign = socialbutton”