2017-12-09 7 views
0

どのように動作させるかわからないけど、それは学習プロセスの一部だと思います...ベローは、2つのリンクを持つコードです。それは、リダイレクトする必要があります。それは両方のリンク上のマウスアクションが同一である(左クリックでは開き、中クリックでは新しいタブで、右クリックではプロパティが開きます)。入力いただきありがとうございます。右クリックにデフォルトアクションを割り当てる方法は?

<!DOCTYPE html> 
<html> 
<head> 

</head> 
<body> 
<a id="googlelink" href="https://www.google.com">Google</a> 
<hr> 
<a href="https://www.google.com">Google</a> 
<hr> 

<script> 

document.getElementById("googlelink").addEventListener("click", redirectToYahoo); 
document.getElementById("googlelink").addEventListener("auxclick", redirectToYahooNewTab); 
document.getElementById("googlelink").addEventListener("contextmenu", rightClick); 


function redirectToYahoo() { // LEFT MOUSE CLICK 
    window.location.href = "https://www.yahoo.com"; 
} 

function redirectToYahooNewTab() { // MIDDLE MOUSE CLICK 
    window.open('https://www.yahoo.com', '_blank'); 
} 

function rightClick() { // RIGHT MOUSE CLICK 
    event.preventDefault(); 
}; 

</script> 
</body> 

これは、ジョブを実行した@charlietflのスニペットです。

var link = document.getElementById('googlelink'); 

link.addEventListener("auxclick",function(e){ 
    if(e.button !==2){ 
     window.open('https://www.yahoo.com', '_blank'); 
    }else{ 
    e.preventDefault() 
    } 
}); 

link.addEventListener('click', function(e){ 
window.location.href = "https://www.yahoo.com"; 
}); 

link.addEventListener('contextmenu', function(e){ 
}); 
+0

あなたは '右クリック(トリガーを防ぐ右クリックで意味) '? 'target.removeEventListener();'を使用してください。 –

+0

リンクを右クリックすると、クリックしたように動作します。 – hoppdev

+0

@DraganTomovskiあなたは 'document.getElementById(" googlelink ")のように使いました。removeEventListener(" oncontextmenu "、rightClick);'?最後の行? –

答えて

0

問題はauxclickにあります。どのマウスボタンが使用されたかを確認する必要があります。

auxclickを使用している理由がわかりません...ブラウザのサポートが限られています。

通常のクリックリスナーは、右クリックをトリガーしません。また、イベント名はcontextmenuありませんoncontextmenu

var link = document.getElementById('test'); 
 

 
link.addEventListener("auxclick",function(e){ 
 
    if(e.button !==2){ 
 
     console.log('Aux normal'); 
 
     e.preventDefault(); 
 
    }else{ 
 
     console.log('Aux right click') 
 
    } 
 
}); 
 

 
link.addEventListener('click', function(e){ 
 
    console.log('Normal click')// no log when right click 
 
    e.preventDefault() // just for demo 
 

 
}) 
 

 
link.addEventListener('contextmenu', function(e){ 
 
    console.log('Context menu') 
 
    e.preventDefault() 
 

 
})
<a id="test" href="/questions">Stackoverflow Questions</a>

+0

Whooooah!明確化と追加コードで質問を更新してください。コメントにコードを書くことは非常に難しいです。 – charlietfl

+0

あなたが達成しようとしていることを実際にはっきりさせていません。説明にもっと注意を払う – charlietfl

+0

私は血まみれの混乱を作りました、申し訳ありません。 – hoppdev

0

これはあなたのauxclick問題を解決するが、それはタイトルごとに右クリックを行う方法を答えるかどうかわからない:

変更oncontextmenucontextmenu 。次に、デフォルトのイベントを防ぐ:

document.getElementById("googlelink").addEventListener("contextmenu", rightClick); 
 
    
 
function rightClick() { 
 
    event.preventDefault(); 
 
    alert("Right click disabled"); 
 
    // do your stuff here 
 
};
<button id="googlelink">googlelink</button>

+0

私はそれを非表示にしたくない、私はリンク上のプロパティをポップアップするリンクを通常の右クリックのように動作させたい。 – hoppdev

0

私はこれを参考にすることができ願っています:

var link = document.getElementById("googlelink"); 
 

 
document.addEventListener('DOMContentLoaded', function(ev) { 
 
    replace(ev); 
 
}, false); 
 

 
function replace() { 
 
    link.href = "https://www.yahoo.com"; 
 
}
<a id="googlelink" href="www.google.com"> GOOGLE LINK </a>

+0

そのようなことを達成したいですか? –

+0

問題のコードで元の質問を更新しましたが、今はもっと理解できると思います。 – hoppdev

関連する問題