2017-08-22 73 views
0

我希望能夠打開備用鏈接,當我點擊按住alt按鈕時。我嘗試了一些解決方案,但他們似乎有奇怪的問題。我要的是點擊,如果ALT鍵被按下Javascript 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

無論是否帶有jQuery,您仍然需要在這裏實際執行一些_event handling_。 – CBroe

+0

我會把測試案例放在一起,看看我能否弄清楚......但我的鍵盤沒有alt鍵。 – Quentin

+0

你的鍵盤沒有alt鍵嗎?你從哪裏挖出來的。 – Hasen

回答

1

你必須referenceevent作爲參數,這將有可能以檢查是否點擊過程中,按下一個鍵。

function selectlink(selection, alt, e) { 
 
\t if (e.altKey) { 
 
    \t alert(alt); 
 
    } else { 
 
    \t alert(selection); 
 
\t } 
 
}
<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

太棒了!謝謝。 e.preventDefault()使它完美... – Hasen

+0

確切地說,這是比使用return false更好的做法。編輯我的回答遵守:)。 –

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'); 
    } 
}); 
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鍵被按下哪個是真。這裏可以看到一個工作小提琴。 https://jsfiddle.net/q5kr9h2o/7/