Javascript 单击处理程序是否总是在跟随链接之前完全执行?

Javascript 单击处理程序是否总是在跟随链接之前完全执行?,javascript,jquery,Javascript,Jquery,我在通知菜单中有链接(有点像facebook上的链接,或者这里的链接),当点击通知时,我想进行AJAX调用,将通知标记为“已读”,然后跟随链接 我的问题是,如果我做了一个点击处理程序,比如: $(".elements").on("click", function() { // make AJAX request return true; }); 我可以保证在浏览器跟随链接之前,click处理程序将被完全执行(以及向服务器发出的AJAX请求) 我认为答案是肯定的,因为将此属性添加

我在通知菜单中有链接(有点像facebook上的链接,或者这里的链接),当点击通知时,我想进行AJAX调用,将通知标记为“已读”,然后跟随链接

我的问题是,如果我做了一个
点击
处理程序,比如:

$(".elements").on("click", function() {
    // make AJAX request
    return true;
});
我可以保证在浏览器跟随链接之前,click处理程序将被完全执行(以及向服务器发出的AJAX请求)

我认为答案是肯定的,因为将此属性添加到链接:

onclick="return false;"
阻止链接被跟踪,但我一直在搜索,无法找到我的问题的具体答案,我想100%确定。

未明确定义“发射”。当然,您不能保证AJAX已经走得足够远,服务器会看到它,这是关键

如果您正在进行任何异步调用(如AJAX调用),则应在进行调用之前取消单击事件,然后在调用完成后,手动按照链接进行操作。

(切向)

在Jquery事件处理程序中添加
return false
与调用
preventDefault()
stopPropagation()
相同,这将分别阻止它跟踪链接和冒泡DOM

我将向单击处理程序添加
return false
,在处理程序中进行AJAX调用,然后您将能够提供一个回调函数,该函数将在AJAX完成触发后执行。我相信这是通过AJAX对象的
done
属性实现的


您必须发出一个非异步AJAX请求,否则它可能会在执行之前被浏览器取消。我更新了我的问题以澄清。我不需要服务器的响应,但我需要保证AJAX请求中的数据会发送到服务器。不要更改答案:如果您没有得到肯定的确认,您不知道发生了什么,浏览器也不会做出任何保证。在您的情况下,您可以将侦听器附加到XHR对象的onstatechange事件,并在它至少达到状态2(Header_RECEIVED)时继续。