当" ctrl"时,jQuery OnClick不能在IE中工作。 +"点击"执行

时间:2017-06-23 20:05:11

标签: jquery ajax internet-explorer onclick

我有一个执行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>

3 个答案:

答案 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选项” 根本没有办法选择不做任何事情

enter image description here

我做了一个CodePen来测试它......

似乎click事件被触发的唯一情况是href是空白哈希(href="#")。

因此,与矢量建议一样,使用mouseup事件而不是click可能是一种随意使用。

答案 2 :(得分:0)

Internet Explorer有点棘手。由于您正在使用jquery尝试更改

$ .ajax到$ .post以及 在Ajax正文中添加属性cache:false