2017-08-22 12 views
0

altボタンを押したままクリックすると、別のリンクを開くことができます。私はいくつかのソリューションを試しましたが、彼らは奇妙な問題を抱えているようです。Javascript ALTをクリックするとリンクが開きます別のリンク

<a href="javascript:selectlink('http://www.google.com','http://www.yahoo.com')">Click</a> 

好ましくはjQueryのなし:Altキーを体で

function selectlink(selection,alt) { 
    if (alt key is pressed) { 
    window.open(alt,'_blank'); 
    } else { 
    window.open(selection,'_blank'); 
} 

を押されているかどうかを検出するためにクリックしたときに、私が欲しいのです。

+0

jQueryの有無にかかわらず、ここでも実際に_event処理を行う必要があります。 – CBroe

+0

私はテストケースをまとめて、これを理解できるかどうかを確かめますが、キーボードにはaltキーがありません。 – Quentin

+0

キーボードにaltキーがありませんか?どこからそれを掘り起こしたの? – Hasen

答えて

1

あなたはreferenceパラメータとしてeventに、このキーは、クリック時に押された場合、それが可能にチェックするようになりますがあります。

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

正確には、falseを返すよりも良い方法です。私の答えを遵守しました:)。 –

0

ここにjQueryを使用したソリューションがあります。私は昼休みに純粋なJSを使って解決策を書くつもりです。ここで

<a href="http://www.google.com" data-alt-href="http://www.facebook.com" id="x">X</a> 

https://jsfiddle.net/jotq0atz/2/

は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

ここでAltキーが押されたときにリンクが真であるaltdown変数に依存して開かれた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'); 
    } 
} 

で提供さ答えを適応させることによって作られたソリューションです。ここで働くフィドルを見ることができます。 https://jsfiddle.net/q5kr9h2o/7/

関連する問題