J'utilise l'événement onclick
d'un lien haché pour ouvrir une fenêtre contextuelle <div>
. Mais le clic du milieu ne déclenche pas l'événement onclick
mais prend uniquement la valeur d'attribut href
du lien et charge l'URL dans une nouvelle page. Comment puis-je utiliser le clic du milieu pour ouvrir le <div>
en tant que popup?Déclenchement d'un événement onclick en utilisant le clic du milieu
Répondre
La réponse de beggs est correcte, mais il semble que vous vouliez empêcher l'action par défaut du clic du milieu. Dans ce cas, inclure les éléments suivants
$("#foo").on('click', function(e) {
if(e.which == 2) {
e.preventDefault();
alert("middle button");
}
});
preventDefault() arrêtera l'action par défaut de l'événement.
Gardez à l'esprit que '.live' a été déprécié et retiré au profit de' .on' – Neal
ne fonctionne pas dans firefox –
Pour que cela fonctionne dans FF, utilisez: var evt = e || window.event; –
Vous pouvez utiliser
pour identifier le bouton de la souris a été cliqué.
Renvoie une valeur entière indiquant le bouton ayant changé d'état.
- 0 pour la norme 'clic', bouton généralement à gauche
- 1 pour le bouton du milieu, généralement roue-cliquez
- 2 pour le bouton droit, habituellement faites un clic droit
Notez que cette convention n'est pas suivi dans Internet Explorer: voir QuirksMode pour plus de détails.
L'ordre des boutons peut varier en fonction de la configuration du périphérique de pointage.
lire également
Which mouse button has been clicked?
Il y a deux propriétés pour trouver quel bouton de la souris a été cliqué : qui et le bouton. S'il vous plaît noter que ces propriétés ne fonctionnent pas toujours sur un événement de clic. Pour en toute sécurité détecter un bouton de la souris, vous devez utiliser les événements mousedown ou mouseup.
Je recommanderais d'utiliser 'event.which' tel qu'il a été standardisé dans les navigateurs de la source jQuery - ligne 2756 -' if (! event.which && event.button) event.which = (event.button & 1? 1: (event.button & 2? 3: (event.button & 4? 2: 0))); ' –
@RussCam Cependant, 'MouseEvent.which' n'est défini dans aucune spécification, mais' MouseEvent.button' est défini dans DOM L2 Events. – Oriol
@Oriol correct, mais mis en œuvre différemment à travers différents fournisseurs de navigateurs. L'OP a étiqueté la question avec jQuery, c'est pourquoi j'ai suggéré d'utiliser 'event.which', mais j'aurais dû préciser que' MouseEvent.which' ne fait pas partie de la spécification officielle. –
jQuery fournit un attribut .which
sur l'événement qui donne l'identifiant de bouton de clic de gauche à droite comme 1, 2, 3. Dans ce cas, vous voulez 2.
Utilisation:
$("#foo").live('click', function(e) {
if(e.which == 2) {
alert("middle button");
}
});
la réponse de
adamantium également fonctionner, mais vous devez faire attention pour IE comme il note:
$("#foo").live('click', function(e) {
if((!$.browser.msie && e.button == 1) || ($.browser.msie && e.button == 2)) {
alert("middle button");
}
});
Rappelez-vous aussi leL'attributest indexé sur 0 et non indexé sur 1 comme .which
.
puis-je remplacer la fonctionnalité du navigateur mozilla !! Par exemple sur le clic gauche, il ouvre une fenêtre pop-up .... mais pour le clic du milieu, il n'ouvre pas un pop-up et un nouvel onglet est ouvert dans lequel le pop-up ne s'ouvre pas .. je veux remplacer un clic du milieu fonctionnalité de mozilla .... –
Mozilla a un paramètre pour ouvrir tous les popups dans un nouvel onglet plutôt que dans une nouvelle fenêtre. Si l'utilisateur a cette option activée, je ne * pense * pas que vous pouvez faire quelque chose. Si ce n'est pas le cas, pouvez-vous poster du code ou un lien vers la page du problème? – beggs
Cela ne fonctionne pas avec l'événement click dans FF. – l00k
La bonne méthode consiste à utiliser .on
, comme .live
a été désapprouvée puis enlevé de jQuery:
$("#foo").on('click', function(e) {
if(e.which == 2) {
e.preventDefault();
alert("middle button");
}
});
Ou si vous voulez que le « live » comme la sensation et #foo
est pas sur votre page Document début:
$(document).on('click', '#foo', function(e) {
if(e.which == 2) {
e.preventDefault();
alert("middle button");
}
});
Je sais que je suis en retard pour la fête, mais pour ceux qui ont encore des problèmes avec le clic du milieu, vérifiez si vous déléguez l'événement. En cas de délégation, l'événement click
ne se déclenche pas. Comparer:
Cela fonctionne pour les clics moyen:
$('a').on('click', function(){
console.log('middle click');
});
Cela ne fonctionne pas pour les clics moyen:
$('div').on('click', 'a', function(){
console.log('middle click');
});
Si vous avez besoin de suivre le milieu cliquez en utilisant délégation de l'événement, le seul moyen de contourner comme indiqué dans le jQuery ticket correspondant, est d'utiliser mousedown
ou mouseup
à la place. Comme si:
Cela fonctionne pour les clics moyen délégués:
$('div').on('mouseup', 'a', function(){
console.log('middle click');
});
Cette question est un peu vieux, mais j'ai trouvé une solution:
$(window).on('mousedown', function(e) {
if(e.which == 2) {
e.preventDefault();
}
});
Chrome ne se déclenche pas "cliquez sur" événement pour la molette de la souris
Travail en FF et Chrome
Je habituellement Je déteste quand les gens offrent des alternatives au lieu de solutions, mais puisque des solutions ont déjà été fournies, je vais briser ma propre règle.
Les sites Web sur lesquels la fonctionnalité de clic du milieu est surchargé ont tendance à m'amuser vraiment, vraiment. Je suis généralement en train de cliquer sur le bouton parce que je veux ouvrir le nouveau contenu dans un nouvel onglet tout en ayant une vue non obstruée du contenu actuel. Chaque fois que vous pouvez laisser la fonctionnalité du clic du milieu seul et rendre le contenu pertinent disponible via l'attribut HREF de votre élément cliqué, je crois fermement que c'est ce que vous devriez faire.
- 1. événement clic droit (onclick) en chrome, opéra et IE (javascript)
- 2. Déclenchement d'un événement de clic avec jQuery échouant
- 3. Assigner une fonction d'évènement onclick à un autre événement clic en utilisant jquery
- 4. Gestion de C# WebBrowser lors du déclenchement d'un clic/événement ComponentArt CallBack
- 5. Problème lors du déclenchement d'un événement onKey avec Android
- 6. Déclenchement d'un événement futur basé sur un événement en cours
- 7. Déclenchement d'événement dans asp.net en utilisant javascript
- 8. Problème de déclenchement JQuery JavaScript ("clic")
- 9. Struts2 Plugin jQuery: lien de déclenchement en double-clic
- 10. événement onclick sur cancel la table en utilisant jquery
- 11. Ajout du bouton clic événement lorsque Fancybox pop-up ouvert
- 12. Empêche le déclenchement du clic sur le conteneur parent lorsque vous cliquez sur un lien hypertexte
- 13. WPF: Comment retarder le déclenchement d'un événement défini en XAML?
- 14. Événement onClick dans VB.NET
- 15. événement onclick désactiver jquery
- 16. Le déclenchement d'un événement click avec le prototype
- 17. jQuery déclenchement d'un événement de clic semble courir un pas derrière
- 18. événement clic droit dans opencv
- 19. Déclenchement d'événements de clic à partir d'un sandbox FF
- 20. événement onclick n'est pas le feu dans google chrome
- 21. Access 2007 puis-je capturer le champ "cliqué" en utilisant un événement OnClick sur un rapport?
- 22. forme Onclick soumettre en utilisant Mootools
- 23. jquery - événement de clic
- 24. ASP.NET + ModalPopupExtender + événement de clic
- 25. JQuery/JavaScript - bouton de déclenchement cliquez d'un autre bouton clic événement
- 26. javascript onclick événement sur l'objet flash
- 27. Vitesse de déclenchement d'événement OnClick pour les composants
- 28. Événement de clic sur l'icône du dock en utilisant Qt sur Mac
- 29. Événement PropertyChanged, déclencher lors OnClick?
- 30. Déclenchement de FancyBox à partir d'un DIV onclick();
Je ne comprends toujours pas comment le problème a été résolu, lorsque le clic du milieu ne déclenche pas l'événement onclick. –
@ TomášZato Les navigateurs ne déclenchent pas un événement 'clic' avec un clic du milieu, mais ils peuvent déclencher un événement 'mouseup'. Ensuite, le framework javascript peut lier ceci à une action 'clic' pour vous perturber. Je recommande la lecture de http://www.unixpapa.com/js/mouse.html – rds