1

我正在尝试找到一个创造性的解决方案。我知道那里有很多脚本,其中很多来自 stackoverflow 本身,它们可以通过 body onload 对网页进行“扫描”——但这并不是我想要的。

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

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

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

我更喜欢 Javascript 而不是 Jquery。

4

2 回答 2

2

您应该依靠使用委托的冒泡机制,而不是附加单个事件处理程序

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);
于 2013-03-07T22:34:14.580 回答
0

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

var onClickLink = function(e) {
    // handle event here
};
$(document).on('click', 'a', onClickLink);
于 2013-03-07T22:27:53.203 回答