我希望能够在按住alt按钮的同时打开备用链接。我尝试了一些解决方案,但它们似乎有一些奇怪的问题。我想要的只是点击以检测是否按下了alt键
function selectlink(selection,alt) {
if (alt key is pressed) {
window.open(alt,'_blank');
} else {
window.open(selection,'_blank');
}
身体:
<a href="javascript:selectlink('http://www.google.com','http://www.yahoo.com')">Click</a>
最好没有Jquery。
答案 0 :(得分:1)
您必须reference event
作为参数,这样才能检查点击过程中是否按下了某个键。
function selectlink(selection, alt, e) {
if (e.altKey) {
alert(alt);
} else {
alert(selection);
}
}
<a href="#" onclick="selectlink('http://www.google.com','http://www.yahoo.com', event)">Click</a>
通过一点点重写,您可以使链接更加智能,并且在禁用javascript时仍然具有正常运行的链接。
function selectLink(e) {
var el = e.target;
if (e.altKey) {
window.open(el.getAttribute("alternative"), '_blank');
e.preventDefault();
}
}
<a href="http://www.google.com" onclick="selectLink(event)" alternative="http://www.yahoo.com">Click</a>
答案 1 :(得分:0)
这是使用jQuery的解决方案。我将在午休时使用纯JS编写解决方案。
https://jsfiddle.net/jotq0atz/2/
<a href="http://www.google.com" data-alt-href="http://www.facebook.com" id="x">X</a>
这是js:
$("#x").on('click', function(e){
link = $(e.currentTarget).attr('href');
alt_link = $(e.currentTarget).attr('data-alt-href');
if(e.altKey){
alert("alt was held while clicking");
window.open(alt_link, '_blank');
} else {
alert("alt wasn't held while clicking");
window.open(link, '_blank');
}
});
答案 2 :(得分:0)
这是通过调整javascript alt key
中提供的答案而制定的解决方案var altdown = false;
document.onkeydown = KeyCheck;
document.onkeyup = KeyCheck;
function KeyCheck(e)
{
var KeyID = (window.event) ? event.keyCode : e.keyCode;
switch(KeyID)
{
case 18:
document.Form1.KeyName.value = "Alt";
if(e.type == "keydown"){
altdown = true;
}
else if(e.type == "keyup"){
altdown = false;
}
break;
}
}
function selectlink(selection,alt) {
if (altdown) {
window.open(alt,'_blank');
} else {
window.open(selection,'_blank');
}
}
链接打开依赖于altdown变量,当按下alt键时该变量为true。这里可以看到一个工作小提琴。 https://jsfiddle.net/q5kr9h2o/7/