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