我需要跟踪我们网站上一个目录的出站点击,并希望这样做,以便实际的url在href中。类似于:
<a href="http://www.example.com" id="a24" class="link" >Go to Example</a>
这是我在下面使用的JQuery。click.php文件基本上是查找链接id,然后将单击信息插入到mysql表中。
即使click.php需要很长时间才能完成,这似乎也能很好地工作。换句话说,即使我在完成之前将click.php设置为睡眠10秒,用户也会立即链接到目标url。
我使用的是$('a.link')。mousedown而不是$[('a.link')。单击当我使用.click时,它不起作用(单击不会被记录)。我只是想知道为什么它不适用于使用.click函数,而只适用于.mousedown功能。
这是用JQuery捕捉点击的好方法吗?还是有更好的方法?(我意识到任何关闭Javascript的人都不会被计算在内)。
$('a.link').mousedown( function(e){
var my_id = $(this).attr('id');
$.ajax({
type: "GET",
url: "/tiger/sal/clicks/click.php?id=my_id"
});
return true;
});
您没有给jQuery足够的时间在浏览器引导之前计算所有内容。你为什么不试试这样的东西:
$('a.link').click( function(e){
// Prevent the browser from running away
e.preventDefault();
// I've changed this to POST to make it a bit more secure
// You can access the link ID with $_POST['link_id'] now
$.post('/tiger/sal/clicks/click.php', { link_id: $(this).attr('id') });
// Wave goodbye
window.location.href = $(this).attr('href');
});
我不明白为什么它不起作用。
当我测试它时,这是有效的,但url端点需要在AJAX调用中修复:
$(function(){
$('a.link').click( function(e){
var my_id = $(this).attr('id');
var href = $(this).attr('href');
$.ajax({
type: "GET",
url: "/tiger/sal/clicks/click.php?id=" + my_id,
success: function(d){
// allow it to successfully call the server before redirecting.
window.location = href;
}
});
return false;
});
});
我不会在"mousedown"中这样做,因为这不能保证用户真的点击了链接。