Javascript ALT点击链接打开替代链接

时间:2017-08-22 08:58:38

标签: javascript

我希望能够在按住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。

3 个答案:

答案 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/