我有一个执行ajax POST的jQuery函数。每当链接(href)被点击时#34;使用填充的id,函数启动一个动作。
我的功能在Chrome中运行良好。当我只是"点击"一个链接或按住" Ctrl" +"点击" (要在新标签中打开),ajax POST会执行它应该执行的操作。在IE中,当我简单地点击"一个链接,它按预期工作。但是,当我按住" Ctrl" +"点击" (要在新选项卡中打开),完全忽略ajax POST,就好像没有单击任何内容一样。 IE中的新标签打开,但我的ajax POST被跳过了。
如何获得" Ctrl" +"点击"在Internet Explorer中被jQuery识别?
$(document).ready(function () {
$(document).on('click', 'a', function () {
var reportNum = $(this).attr("id");
var embed = $(this).attr("name");
if (reportNum == null) {
} else {
$.ajax({
type: "POST",
url: "@Url.Action("updateHitCount", "Base")",
data:
{
reportNum: reportNum
}
});
}
});
});
HTML
<a href="https://google.com" id="foo">Click Here!</a>
答案 0 :(得分:1)
在IE中使用您的代码进行游戏后,看起来在执行ctrl +点击时它并未将其视为click
事件,因此您的点击事件未触发。假设IE将其视为ctrl+click
(该事件不是因为它自己的实体而存在)。
解决方案是使用mouseup / down事件
https://jsfiddle.net/x7sap85f/19/
$(document).ready(function () {
$('body').on('mouseup', 'a', function (e) {
e.preventDefault();
alert('clicked!');
});
});
您可能不需要防止默认,具体取决于您想要发生的事情。
答案 1 :(得分:1)
这是一个有趣的问题。
这让我学到了关于跨浏览器思考的新内容。
根据我的观察,我认为当 CTRL 键关闭时,Internet Explorer 故意阻止 click
事件发生。这是为了管理弹出窗口的Microsoft方式...
我还发现了this behavior exist at least since IE7。
如果您在标签中查看“Internet选项” 根本没有办法选择不做任何事情。
我做了一个CodePen来测试它......
似乎click
事件被触发的唯一情况是href
是空白哈希(href="#"
)。
因此,与矢量建议一样,使用mouseup
事件而不是click
可能是一种随意使用。
答案 2 :(得分:0)
Internet Explorer有点棘手。由于您正在使用jquery尝试更改
$ .ajax到$ .post以及 在Ajax正文中添加属性cache:false