如何处理JS或jQuery中的每个链接点击页面?

时间:2012-03-09 16:04:59

标签: javascript jquery dom

人们使用WYSIWYG创建者创建他们自己的网站。这些网站内有链接。他们也可以浏览网站的HTML并将它们放在自己的链接中。

我现在想要处理在我的创建者创建的网站中发生的每个链接点击,并将其记录到我的服务器。我知道如何将数据从JS或jQuery传递给PHP服务器。但我需要知道的是如何处理人们点击链接的时刻,推迟重定向一段时间,并在这段时间内获取此链接的URL和标题并发送到我的PHP服务器。

那么如何处理我不知道的结构的网站上的每个链接点击(或位置变更),并点击链接的链接和标题?

5 个答案:

答案 0 :(得分:4)

$('a').click(function(e) {
    e.preventDefault();
    var href = $(this).attr('href');
    var title = $(this).attr('title');

    // Send your data to php
    if ($(this).attr('target') === '_blank') {
        window.location.href = href;  // redirect to href
    } else {
        window.open(href);
    }
});

答案 1 :(得分:2)

jQuery("a").click(function(){  
  var href = $(this).attr('href');
  $.post('/', {link: href}).then(function(){ document.location = href; });
  return false;
});

试一试

答案 2 :(得分:1)

要拦截每个链接,只需将此函数放在每个页面都可以访问的位置(页眉/页脚/等):

$('a').click(function(event) {
    event.preventDefault();//To prevent following the link

    //Your logic. attr('href') and attr('title')
});

答案 3 :(得分:0)

您可以使用jQuery来执行此操作。使用on事件并绑定到a元素的click事件。然后,您可以event.preventDefault();执行您的逻辑,然后通过从目标获取href来正常继续。

答案 4 :(得分:0)

为什么要等到重定向完成日志记录。让它成为异步调用,这样用户就不需要等待了。如果要将服务器页面放在不同的域中,要解决跨域ajax问题,请使用jsonp数据类型。

$('a').click(function() {

   $.ajax({
     url:"yourwebsite/loggingpage.php?data="+$(this).attr("href"),
     dataType: 'jsonp' // Notice! JSONP <-- P (lowercase)         

  });

});

在loggingpage.php中,您可以读取请求数据并将其记录到持久存储中或任何您想要的地方。