Javascript:检测用户是否单击了指向外部站点的链接

时间:2013-03-07 22:19:52

标签: javascript href

我正试图找到一个创造性的解决方案。我知道有很多脚本,很多来自stackoverflow本身,可以通过body onload对网页进行“扫描” - 但这不是我正在寻找的。

我正在寻找可以包含在页面标题中的单个脚本(通过include,因此它包含在所有页面上),用于检测用户点击的href是外部还是本地,以及是否是本地它会显示一条消息。

我已经有了一个解决方案,要求我在每个href上包含一个onClick处理程序。问题是这个特定的网站确实有数百个hrefs ..我正在寻找一个非常干净的解决方案,这将节省我的时间。

我有一些我正在玩的剧本,我只是想知道是否有人熟悉这种可以轻松做到这一点的方法。

我更喜欢Javascript而不是Jquery。

2 个答案:

答案 0 :(得分:1)

您应该依赖使用委托的冒泡机制

,而不是附加单个事件处理程序
var body = document.getElementsByTagName('body')[0];

body.addEventListener('click', function(e){ 
    if(e.target.nodeName === "A"){
        var href = e.target.getAttribute('href'),
            selfhost = window.location.hostname;
        if(href.indexOf(selfhost) !== -1){
            // display message here
        }
    }
}, false);

答案 1 :(得分:0)

使用$.on() http://api.jquery.com/on/并将其绑定到您的文档。因此,您只需附加1个处理程序即可处理所有数千个链接。例如

var onClickLink = function(e) {
    // handle event here
};
$(document).on('click', 'a', onClickLink);