锚定点击和jQuery不在FF和Safari中工作,但在Chrome中工作,为什么?
问题锚定点击和jQuery不在FF和Safari中工作,但在Chrome中工作,为什么?,jquery,ajax,google-chrome,firefox,safari,Jquery,Ajax,Google Chrome,Firefox,Safari,问题 非常简单:除了锚定标记的正常单击功能之外,如果锚定被单击,我想发出一个ajaxGET请求(在我的示例中,属性为classvaluefire) 重要:锚定的目标(href)和Ajax调用的目标在目标url中具有相同的域 jQuery代码示例: $(document).ready(function() { $('.fire').click(function() { $.get( "http://example.com/rest/fire/"); }); }); HTML代码示
非常简单:除了锚定标记的正常单击功能之外,如果锚定被单击,我想发出一个ajax
GET
请求(在我的示例中,属性为class
valuefire
)
重要:锚定的目标(href)和Ajax
调用的目标在目标url中具有相同的域
jQuery代码示例:
$(document).ready(function() {
$('.fire').click(function() {
$.get( "http://example.com/rest/fire/");
});
});
HTML代码示例:
<a href="http://example.com/index.html" class="fire">Click here</a>
您需要阻止链接的默认操作 找到解决方案(2014年10月28日更新)
它在Safari和Firefox中不起作用,因为
$.get()
在默认情况下使用异步模式(正如我最初希望的那样)。但是,如果目标域与锚定标记的URL相同,Firefox和Safari似乎忽略了$.get()
。因此,为了使其工作,您必须同步地进行ajax调用
更新jQuery代码(现在也适用于Firefox和Chrome):
但我仍然相信这是Firefox和Safari中的一个bug,它也应该在异步模式下工作。问题的根本原因很可能是基于浏览器中的实现,它们如何建立到单个域的连接(通过一个连接多路复用,多个非多路复用连接?)。。。也许有人知道?谢谢@Clayton,我会测试它并给出一些反馈。当然,我希望两者都能起作用:发送ajax并打开新链接……嗨@Clayton,这不起作用。它只触发AJAX请求。正常的锚定单击不再起作用。我需要一个同时执行两个请求的解决方案。
$(document).ready(function() {
$('.fire').click(function() {
$.ajax({
url: "http://example.com/rest/fire/" ,
async: false
});
});
});
$(document).ready(function() {
$('.fire').click(function(e) {
$.get("/test");
e.preventDefault();
});
});
$(document).ready(function() {
$('.fire').click(function() {
$.ajax({
url: "http://example.com/rest/fire/" ,
async: false // needed for Safari and Firefox
});
});
});