javascript - Orta tuş tıklaması kullanarak onclick olayını tetikleme
onclick olayını, bir <div>'i açmak için bir açılır pencere olarak kullandığım bir hash'lenmiş bağlantıda kullanıyorum. Ancak orta tıklama onclick olayını tetiklemiyor, sadece bağlantının href özniteliğinin değerini alıyor ve URL'yi yeni bir sayfada yüklüyor. Orta tıklamayı kullanarak <div>'i açılır pencere olarak nasıl açabilirim?
Cevap #1
DÜZENLE
Bu yanıt artık kullanımdan kaldırılmıştır ve Chrome'da çalışmaz. Muhtemelen auxclick olayını kullanmak zorunda kalacaksınız, ancak lütfen aşağıdaki diğer yanıtlara bakın.
/DÜZENLE
Beggs'in cevabı doğru, ancak orta tıklamanın varsayılan eylemini engellemek istediğiniz gibi görünüyor. Bu durumda, aşağıdakileri ekleyin
$("#foo").on('click', function(e) {
if (e.which == 2) {
e.preventDefault();
alert("middle button");
}
});<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a id="foo" href="http://example.com">middle click me</a>preventDefault() olayın varsayılan eylemini durduracaktır.
Cevap #2
Orta tıklama/fare tekerleği düğmesinin algılanabilmesi için, auxclick olayını kullanmanız gerekir. Örneğin:
<a href="https://example.com" onauxclick="func()" id="myLink"></a>
O zaman betik dosyanızda
function func(e) {
if (e.button == 1) {
alert("middle button clicked")
}
}
Bunu JavaScript'ten yapmak istiyorsanız (HTML özniteliği onauxclick'i kullanmadan), o zaman öğeye addEventListener ekleyebilirsiniz:
let myLink = document.getElementById('myLink')
myLink.addEventListener('auxclick', function(e) {
if (e.button == 1) {
alert("middle button clicked")
}
})<a id="myLink" href="http://example.com">middle click me</a>MdN sayfasındaki auxclick olayı hakkında buradan bilgi edinin.
Cevap #3
Kullanabilirsiniz
event.button
Hangi fare düğmesine tıklandığını belirlemek için.
Durumu değişen düğmeyi gösteren bir tamsayı değeri döndürür.
- 0 standart 'tıklama' için, genellikle sol düğme
- Orta düğme için 1, genellikle tekerlek tıklaması
- 2 sağ tuş için, genellikle sağ tık
Bu kuralın Internet Explorer'da uygulanmadığını unutmayın: detaylar için QuirksMode'a bakın.
Düğmelerin sıralaması, işaretleme cihazının nasıl yapılandırıldığına bağlı olarak farklı olabilir.
Ayrıca oku
Hangi fare düğmesine tıklandı?
Hangi fare düğmesine tıklandığını öğrenmek için iki özellik vardır: which ve button. Lütfen bu özelliklerin her zaman click olayında çalışmadığını unutmayın. Bir fare düğmesini güvenli bir şekilde algılamak için mousedown veya mouseup olaylarını kullanmanız gerekir.
document.getElementById('foo').addEventListener('click', function(e) {
console.log(e.button);
e.preventDefault();
});<a id="foo" href="http://example.com">middle click me</a>Cevap #4
Bu soru biraz eski, ama bir çözüm buldum:
$(window).on('mousedown', function(e) {
if( e.which == 2 ) {
e.preventDefault();
}
});<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="http://example.com">middle click me</a>Chrome fare tekerleği için "click" olayını tetiklemiyor
FF ve Chrome'da çalış
