【问题标题】:Ctrl + Left mouse Click (multiple selection) in macmac中Ctrl+鼠标左键单击(多选)
【发布时间】:2014-09-02 15:28:32
【问题描述】:

我将使用 Ctrl + Left-mouse 使用 javascript/jquery 单击以多选对象。

下面是我用jQuery使用的,我在windows' chrome中测试很好,可以用于多选,但是,当我使用Mac Sarifa打开页面进行多选时,出现了一些问题: 当我按住control 键并单击要选择的对象时,它会出现contextmenu。(似乎Mac 具有此默认设置,就像右键单击windows),但是,我不想这个菜单显示,我只想让它像windows一样,我该怎么办?任何建议都非常感谢,谢谢。

 $(document).bind('keydown', function (e){

        if(e.keyCode === 17)//Ctrl
        {
            _this.Ctrl = true;
        }
    });
 $(document).bind('keyup', function (e)
    {
        if(e.which === 17)//Ctrl
        {
            _this.Ctrl = false;
        }
    });

【问题讨论】:

    标签: javascript jquery mouseevent keyevent


    【解决方案1】:

    在 Mac OSX 中,实现多选的适当方法是使用 CMD 键。它在所有本机应用程序中都是这样工作的,IMO 它应该在浏览器中以相同的方式工作。我建议您检查鼠标事件处理程序中的键,而不是将键存储在 keydown 上并在 keyup 上重新设置,如下所示:

    function isMac() {
        return navigator.userAgent.indexOf('Mac OS X') != -1;
    }
    
    $(document).bind('mousedown', function (e) {
        if (isMac() && e.metaKey || !isMac() && e.ctrlKey) {
            // Multiple selection
        }
    });
    

    isMac 的实现取自这里 - http://css-tricks.com/snippets/javascript/test-mac-pc-javascript/

    【讨论】:

    • 对我来说,简单版 e.ctrlKey || e.metaKey 似乎也可以正常工作
    • 唯一的问题:由于 mac 也有一个 ctrl 键,您可能不想将处理程序附加到 mac 上的该键。
    • 我同意@Jakob 的观点——如果我们选择其中任何一个,CTRL 和 CMD 键在 Mac 上的作用相同。更糟糕的是 - 这将捕获 Windows 上的 Windows 键,这绝对是这里想要的结果。在 Windows 和 Linux 上,通常 CMD 键替代 CTRL。这就是为什么我建议使用更复杂的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多