Firefox.post和jquery

Firefox.post和jquery,jquery,firefox,post,Jquery,Firefox,Post,好的,基本上,我制作了一个脚本(就是那个脚本),将.post转换成一个php文件,然后将一些信息插入数据库以跟踪链接点击。在IE8和Opera 10中运行良好,但在Firefox中不起作用。它只加载链接目标,而不插入数据库。仅当我添加一个alert()或返回false时,它才起作用;阻止它点击链接的东西,这不是我需要的。我试过各种各样的东西,都没用。 看起来Firefox加载另一个页面的速度比解析脚本的速度快。Opera和IE等等,FF没有。 有什么好主意吗 $(document).ready

好的,基本上,我制作了一个脚本(就是那个脚本),将.post转换成一个php文件,然后将一些信息插入数据库以跟踪链接点击。在IE8和Opera 10中运行良好,但在Firefox中不起作用。它只加载链接目标,而不插入数据库。仅当我添加一个alert()或返回false时,它才起作用;阻止它点击链接的东西,这不是我需要的。我试过各种各样的东西,都没用。 看起来Firefox加载另一个页面的速度比解析脚本的速度快。Opera和IE等等,FF没有。 有什么好主意吗

 $(document).ready(function(){
           $("div.buy_block_content a,div.upper-banner a, a.lehitse-big, a.lehitse-small").click(function(){
           var type = $(this).attr('id');
           var klass = $(this).attr('class'); 
           var pathname = window.location.pathname;
           var linka = $(this).attr('href');
           $.post("/sites/all/modules/statistics_track/track.php", { link: linka, source: pathname, type: type, klass: klass });
           });
         });
编辑:值得一提的是,跟踪是在Drupal(CMS)上完成的,所以核心中的任何修改或通过链接传递某些内容都没有帮助。 跟踪是针对内部链接和将您带到其他站点的链接进行的。
我只是好奇,为什么Opera和IE吃了它,而FF不喜欢它…

用普通表单提交
$.post
是一个
$.ajax
包装器,因此希望您通过XHR提交。例如:

$(document).ready(function(){
   $("div.buy_block_content a,div.upper-banner a, a.lehitse-big, a.lehitse-small").click(function(){
       var type = $(this).attr('id');
       var klass = $(this).attr('class'); 
       var pathname = window.location.pathname;
       var linka = $(this).attr('href');
       var $form = $("<form id='myForm' method='post' action='/sites/all/modules/statistics_track/track.php'></form>");
       var $type = $("<input type='hidden' name='type'/>").val(type);
       var $linka = $("<input type='hidden' name='linka'/>").val(linka);
       var $pathname = $("<input type='hidden' name='pathname'/>").val(pathname);
       var $klass = $("<input type='hidden' name='klass'/>").val(klass);
       $form.append($type);
       $form.append($linka);
       $form.append($pathname);
       $form.append($klass);
       $("body").append($form);
       $("#myForm").submit();
    });
}); 
$(文档).ready(函数(){
$(“div.buy\u block\u content a,div.upper-banner a,a.lehitse-big,a.lehitse-small”)。单击(函数(){
var type=$(this.attr('id');
var klass=$(this.attr('class');
var pathname=window.location.pathname;
var linka=$(this.attr('href');
变量$form=$(“”);
var$type=$(“”).val(type);
var$linka=$(“”).val(linka);
var$pathname=$(“”).val(路径名);
var$klass=$(“”).val(klass);
$form.append($type);
$form.append($linka);
$form.append($pathname);
$form.append($klass);
$(“正文”)。附加($表格);
$(“#我的表格”).submit();
});
}); 

要可靠地执行此操作,您必须返回false并将回调函数传递给
$。链接后面的post

.click(function(){
    var that= this;
    $.post(
        '/sites/all/modules/statistics_track/track.php',
        {link: this.href, source: location.pathname, type: this.id, klass: this.className},
        function() {
            location.href= that.href;
        }
    );
    return false;
 });
这将是非常讨厌的,我一点也不推荐。它将中断导航取消(即单击停止或单击第二个链接),并使所有链接单击变慢(比您现有的脚本已经使其变慢)

这种链接跟踪行为称为ping链接。HTML5在
a
元素上提出了一个
ping
属性,该属性将为您实现这一点,而无需所有AJAX操作。不幸的是,它没有得到广泛的支持,并且由于公众的强烈抗议,目前在Firefox中默认为关闭。这应该给你一个提示:用户讨厌ping链接


事实上,如果没有ping,你通常会过得更好。内部链接已经将其推荐人传递给您进行日志分析;如果愿意,可以将一些查询部分添加到这些链接以进行跟踪。对于外部链接,您可以通过301重定向页面发送它们以获取跟踪信息(例如,搜索引擎在单击它们的链接时所做的操作)。

我已将.click替换为mousedown,并将硬编码脚本插入页面(以前是一个外部文件)。现在似乎在为FF工作。

+1。如果你想重新加载页面,那么使用AJAX是没有意义的。不,现在它甚至不能在其他浏览器中工作。这些链接会把你带到其他网站,所以我认为表单不是最好的解决方案。也许最好的解决方案是让浏览器等待响应,然后重定向,但还没有找到方法。@Djeux-我没有关闭
输入
标记,我建议你再试一次。是的,现在在FF中工作,但不再是opera了:)该死的浏览器:(