2017-04-07 57 views
1

我正在使用它來點擊一個元素來打開鏈接。有沒有辦法讓我打開一個新的標籤,當我按住cmd鍵(以及任何反映在其他操作系統)?使用cmd-key在新選項卡中打開鏈接?

$(document).on('click', '.row', function(e) { 
    e.preventDefault(); 
    window.location = '?id=' + $(this).data('id'); 
}); 

基本上一路正常<a>的作品,但通過JS。

+1

'window.open(url)'用於新窗口。 – Ibu

回答

0

試試這個:

$(document).on('click', '.row', function(e) { 
 
    e.preventDefault(); 
 
    if (cmd) window.open('?id=' + $(this).data('id'), "_blank"); 
 
    else window.location = '?id=' + $(this).data('id'); 
 
}); 
 
var cmd = false; 
 
$(document).keydown(function(e) { 
 
    var key = e.which || e.keyCode; 
 
    if (key == 91 || key == 93 || key == 17 || key == 224) cmd = true; 
 
}); 
 
$(document).keyup(function(e) { 
 
    cmd = false; 
 
});
.row { border: 1px #000 solid }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="row">Click Me</div>

+0

太棒了!似乎並不適用於Mac上的Firefox,但Safari和Chrome。對我來說夠好! – SeaBass

+0

測試它是否現在可以在Firefox上運行,但也可以通過它來改變狀態。它只是添加了key = e.which || e.keyCode,因爲它不適用於Firefox我認爲,只是keyCode。如果它不起作用,我可以將其更改回來,以便其他人查看它。 –

+0

不幸的是,同樣的事情。仍然適用於Safari和Chrome。謝謝! – SeaBass

1

當然,你只需要跟蹤的是否你的目標鍵(一個或多個)被按下,除了你的點擊處理程序:

document.querySelector('#test').addEventListener('click', function(e) { 
 
    if(cmdPressed) { 
 
     console.log('new tab'); 
 
     // window.open(''); 
 
    } else { 
 
     console.log('redirect'); 
 
     // location.href = ''; 
 
    } 
 
}) 
 

 
// keeps track of whether user is pressing cmd key 
 
var cmdPressed = false; 
 

 
document.body.addEventListener('keydown', function(e) { 
 
    cmdPressed = e.which === 91; 
 
}); 
 

 
document.body.addEventListener('keyup', function(e) { 
 
    cmdPressed = false; 
 
});
<div id="test"> 
 
Click or CMD+Click me 
 
</div>

或使用jQuery:

$(document).on('click', '#test', function(e) { 
    e.preventDefault(); 
    if(cmdPressed) { 
     console.log('new tab'); 
     // window.open(''); 
    } else { 
     console.log('redirect'); 
     // location.href = ''; 
    } 
}); 

// keeps track of whether user is pressing cmd key 
var cmdPressed = false; 

$(document).on('keydown', function(e) { 
    cmdPressed = e.which === 91; 
}); 

$(document).on('keyup', function(e) { 
    cmdPressed = false; 
}); 
相關問題