我有一个执行 ajax POST 的 jQuery 函数。每当使用填充的 ID“单击”链接 (href) 时,函数就会启动一个操作。
我的函数在 Chrome 中运行良好。当我简单地“单击”链接或按住“Ctrl”+“单击”(在新选项卡中打开)时,ajax POST 就会执行它应该执行的操作。在 IE 中,当我只需“单击”链接时,它就会按预期工作。但是当我按住“Ctrl”+“单击”(在新选项卡中打开)时,ajax POST 被完全忽略,就好像没有单击任何内容一样。 IE 中的新选项卡打开,但我的 ajax POST 被跳过。
如何让 Internet Explorer 中的 jQuery 识别“Ctrl”+“Click”?
$(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>
最佳答案
这是一个有趣的问题。
它让我学到了一些关于跨浏览器的新知识思考。
根据我的观察,我认为 Internet Explorer 故意阻止按下 CTRL 键时发生click
事件。这是为了以 Microsoft 的方式管理弹出窗口...
我还发现this behavior exist at least since IE7 .
如果您在选项卡中查看“Internet 选项”。
根本没有办法选择像“不做任何事情”这样的东西。
我做了一个CodePen测试一下...
似乎触发 click
事件的唯一情况是 href
是空白哈希 (href="#"
)。
因此,就像 Vector 建议的那样,使用 mouseup
事件而不是 click
可能是一种解决方案。
关于执行 "ctrl"+ "click"时,jQuery OnClick 在 IE 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44729183/