Javascript can';t使用ctrl+;单击preventDefault并返回false

Javascript can';t使用ctrl+;单击preventDefault并返回false,javascript,jquery,ajax,Javascript,Jquery,Ajax,我在AJAX中加载每个页面,所以我在链接上使用return false在AJAX中加载它们 问题:如果这些家伙想在一个新窗口中打开它,他不能,ctrl+click也会激活ajax,我没有尝试中键,因为我没有鼠标 然后我尝试了e.preventDefault,但它仍然阻止了这个家伙在另一个选项卡中打开它 你知道我怎样才能避开这个吗 (如果您想尝试:www.p1x3L.com)e.preventDefault()将阻止浏览器跟随该链接 我想做的就是在点击发生时检查Ctrl(或Mac上的cmd)的状态

我在AJAX中加载每个页面,所以我在链接上使用return false在AJAX中加载它们

问题:如果这些家伙想在一个新窗口中打开它,他不能,ctrl+click也会激活ajax,我没有尝试中键,因为我没有鼠标

然后我尝试了e.preventDefault,但它仍然阻止了这个家伙在另一个选项卡中打开它

你知道我怎样才能避开这个吗

(如果您想尝试:www.p1x3L.com)

e.preventDefault()
将阻止浏览器跟随该链接

我想做的就是在点击发生时检查Ctrl(或Mac上的cmd)的状态,然后处理该操作

你需要跟踪按键的动作。考虑下面的示例,它将布尔值赋给<代码> CTRLPress < /C> >:

var ctrlPressed = false;

$(window).on('keydown', function(e) {  
    if (e.metaKey || e.ctrlKey)  ctrlPressed = true;
}).on('keyup', function(e) {
    if (e.metaKey || e.ctrlKey)  ctrlPressed = false;
});
$('a').on('click', function(e) {  
    if(ctrlPressed)
    {
        return true;
    }

    // Handle your AJAX here. No need for an else{} block 
    // since return true will already have executed.
});
现在,在
单击处理程序中,您只需检查
ctrlPressed的状态即可:

var ctrlPressed = false;

$(window).on('keydown', function(e) {  
    if (e.metaKey || e.ctrlKey)  ctrlPressed = true;
}).on('keyup', function(e) {
    if (e.metaKey || e.ctrlKey)  ctrlPressed = false;
});
$('a').on('click', function(e) {  
    if(ctrlPressed)
    {
        return true;
    }

    // Handle your AJAX here. No need for an else{} block 
    // since return true will already have executed.
});
e.preventDefault()
将阻止浏览器跟随该链接

我想做的就是在点击发生时检查Ctrl(或Mac上的cmd)的状态,然后处理该操作

你需要跟踪按键的动作。考虑下面的示例,它将布尔值赋给<代码> CTRLPress < /C> >:

var ctrlPressed = false;

$(window).on('keydown', function(e) {  
    if (e.metaKey || e.ctrlKey)  ctrlPressed = true;
}).on('keyup', function(e) {
    if (e.metaKey || e.ctrlKey)  ctrlPressed = false;
});
$('a').on('click', function(e) {  
    if(ctrlPressed)
    {
        return true;
    }

    // Handle your AJAX here. No need for an else{} block 
    // since return true will already have executed.
});
现在,在
单击处理程序中,您只需检查
ctrlPressed的状态即可:

var ctrlPressed = false;

$(window).on('keydown', function(e) {  
    if (e.metaKey || e.ctrlKey)  ctrlPressed = true;
}).on('keyup', function(e) {
    if (e.metaKey || e.ctrlKey)  ctrlPressed = false;
});
$('a').on('click', function(e) {  
    if(ctrlPressed)
    {
        return true;
    }

    // Handle your AJAX here. No need for an else{} block 
    // since return true will already have executed.
});

哇!在没有鼠标的情况下尝试使用web肯定是一种可怕的体验……我尝试了www.p1x3.com,用鼠标中键单击链接会打开一个新的选项卡。@BenM有些人总是这样做。移动设备?:)没错,但不是为了拥有一只老鼠?!;)我搬家了,只带了我的笔记本电脑,我害怕用鼠标我只能玩电子游戏。。。不要评判我:3哇。在没有鼠标的情况下尝试使用web肯定是一种可怕的体验……我尝试了www.p1x3.com,用鼠标中键单击链接会打开一个新的选项卡。@BenM有些人总是这样做。移动设备?:)没错,但不是为了拥有一只老鼠?!;)我搬家了,只带了我的笔记本电脑,我害怕用鼠标我只能玩电子游戏。。。不要评判我:3我不应该声明ctrlPressed而不使用“var”,这样我就可以全局使用它,从而在on('click')函数中使用它吗?不要弄乱
窗口
对象;)我是否应该在没有“var”的情况下声明ctrlPressed,这样我就可以在on('click')函数中全局使用它?不要使
窗口
对象;)