越来越HREF的onclick

问题描述:

我开发的Mozilla Firefox的扩展。主要功能是获取用户访问的URL并在稍后处理。我想下面的JavaScript代码:越来越HREF的onclick

window.onload = function(){ 
    alert(document.referrer); 
} 

没有工作,所以我试图注入一个onclick事件来使用这个每一个环节:

window.onload = function(){ 
    var links = document.links; 
    for(var i=0;i<links.length;++i){ 
     links[i].onclick = show_href(); 
    } 
} 

function show_href(){ 
    alert(this.href);  
} 

但也行不通。任何其他方法?

+0

但是,这个问题是不是所有的链接都是可以有图像的链接,井 不过我也会试试这个 –

+0

你在哪个上下文中执行那个脚本? 'window'是内容窗口还是浏览器窗口?您可以通过执行alert(window.location.href)来检查。 –

试试这个:

<a href="#xxx">linktextx</a> 
<a href="#yyy">linktexty</a> 
<a href="#zzz">linktextz</a> 
<script> 
    window.onload = function() { 
    var links = document.links; 
    for(var i=0;i<links.length;i++){ 
     links[i].onclick = function(){alert(this.href)}; 
     } 
    } 
</script> 

参见:http://jsfiddle.net/uXmWj/的工作演示

+0

thanx它的工作原理...奇迹y相同的代码没有工作b4 ??? –

+0

这不是完全相同的代码。这为每个链接分配一个匿名函数,而不是一个命名函数。 – graphicdivine

在第二种方法中,问题可能是for loop

window.onload = function(){ 
    var links = document.links, 
     max, 
     i; 

    for(var i=0, max = links.length; i < max; i += 1) { 
     (function() { 
     var link = links[i]; 

     link.onclick = function() { 
      alert(this.href); 
     } 
     })(); 
    } 
}; 
+0

为什么封闭帮助?任何时候他都不会“丢失”“我”的价值。 – Zirak

+0

是的。你是对的。我的回答太快了......对不起。 – user278064

var anchors = document.getElementsByTagName('a'); 
for(var i=0,l=anchors.length;i<l;i++) 
    if(anchors[i].hasAttribute('href')) 
     anchors[i].onclick = function(){ 
      alert(anchors[i].getAttribute('href')); 
     }