人们使用WYSIWYG创建者创建他们自己的网站。这些网站内有链接。他们也可以浏览网站的HTML并将它们放在自己的链接中。
我现在想要处理在我的创建者创建的网站中发生的每个链接点击,并将其记录到我的服务器。我知道如何将数据从JS或jQuery传递给PHP服务器。但我需要知道的是如何处理人们点击链接的时刻,推迟重定向一段时间,并在这段时间内获取此链接的URL和标题并发送到我的PHP服务器。
那么如何处理我不知道的结构的网站上的每个链接点击(或位置变更),并点击链接的链接和标题?
答案 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中,您可以读取请求数据并将其记录到持久存储中或任何您想要的地方。