Je veux ajouter un menu contextuel personnalisé à mon application Web. Cela peut-il être fait sans utiliser de bibliothèques prédéfinies? Si tel est le cas, comment afficher un simple menu de clic droit personnalisé qui n'utilise pas de bibliothèque JavaScript tierce?
Je vise quelque chose comme ce que fait Google Docs. Il permet aux utilisateurs de cliquer avec le bouton droit et de montrer aux utilisateurs leur propre menu.
REMARQUE: je veux apprendre à créer le mien plutôt que d'utiliser quelque chose que quelqu'un a déjà fait depuis la plupart du temps, ces bibliothèques tierces sont remplies de fonctionnalités alors que je ne veux que les fonctionnalités dont j'ai besoin, je veux donc qu'elles soient entièrement faites à la main par moi.
la source
Réponses:
Répondre à votre question - utilisez l'
contextmenu
événement, comme ci-dessous:Mais vous devriez vous demander si vous voulez vraiment remplacer le comportement de clic droit par défaut - cela dépend de l'application que vous développez.
JSFIDDLE
la source
e.preventDefault();
. C'est pourquoi le menu régulier n'est pas affiché. Ce que vous pouvez faire est de créer une logique conditionnelle qui vérifie, si vous appuyez sur la touche tout en cliquant avec le bouton droit puis en n'appelant pase.preventDefault()
- vous obtiendrez alors un menu de navigateur régulier.Cela m'a été très utile. Pour le bien des gens comme moi, attendant le dessin du menu, je mets ici le code que j'ai utilisé pour faire le menu clic droit:
la source
mouseY(event)
etmouseX(event)
avecpx
pour le faire fonctionner comme prévu: http://jsfiddle.net/a6w7n64o/ .test
mais il n'y a aucun élément par l'id detest
. Seuls les éléments avec la classe detest
.jQuery
n'est vraiment pas tout à fait gonflé de trucs supplémentaires. Pas dans la mesure où cela ralentirait quoi que ce soit. C'est très utile et la même chosejQuery
utilisée dans cette réponse pourrait facilement être convertie enJavaScript
commandes standard . Ce n'est peut-être pas 100% en ligne avec la demande de la question d'origine, mais c'est certainement 95% en ligne avec elle.Une combinaison de quelques CSS agréables et de balises html non standard sans bibliothèque externe peut donner un bon résultat (JSFiddle)
HTML
Remarque: la balise de menu n'existe pas, je l'invente (vous pouvez utiliser n'importe quoi)
CSS
Le JavaScript est juste pour cet exemple, je le supprime personnellement pour les menus persistants sur Windows
Notez également, vous pouvez modifier potentiellement
menu > menu{left:100%;}
àmenu > menu{right:100%;}
un menu qui étend de droite à gauche. Vous devrez cependant ajouter une marge ou quelque chose quelque partla source
Selon les réponses ici et sur d'autres flux, j'ai fait une version qui ressemble à celle de Google Chrome, avec transition css3. JS Fiddle
Commençons eazy, puisque nous avons les js ci-dessus sur cette page, nous pouvons nous soucier du CSS et de la mise en page. La disposition que nous utiliserons est un
<a>
élément avec un<img>
élément ou une icône géniale de police (<i class="fa fa-flag"></i>
) et un<span>
pour afficher les raccourcis clavier. Voici donc la structure:Nous allons les mettre dans un div et montrer ce div sur le clic droit. Stylons-les comme dans Google Chrome, d'accord?
Maintenant, nous allons ajouter le code de la réponse acceptée et obtenir la valeur X et Y du curseur. Pour ce faire, nous utiliserons
e.clientX
ete.clientY
. Nous utilisons le client, donc le div du menu doit être corrigé.Et c'est tout! Ajoutez simplement les transitions CSS pour faire un fondu avant et arrière, et c'est fait!
Afficher l'extrait de code
la source
Vous pouvez simplement bloquer le menu contextuel en ajoutant ce qui suit à votre balise body:
Cela bloquera tout accès au menu contextuel (pas seulement à partir du bouton droit de la souris mais aussi du clavier).
PS, vous pouvez l'ajouter à n'importe quelle balise sur laquelle vous souhaitez désactiver le menu contextuel
par exemple:
Désactivera le menu contextuel dans ce div particulier seulement
la source
Testé et fonctionne dans Opera 11.6, firefox 9.01, Internet Explorer 9 et chrome 17 Vous pouvez consulter un exemple de travail dans le menu contextuel javascript
la source
Je sais que cela a déjà été répondu, mais j'ai passé un certain temps à lutter avec la deuxième réponse pour faire disparaître le menu contextuel natif et le faire apparaître là où l'utilisateur a cliqué.
HTML
CSS
Javascript
Exemple CodePen
la source
Essaye ça
http://jsfiddle.net/AkshayBandivadekar/zakn7Lwb/14/
la source
Solution JS et css pure pour un menu contextuel du clic droit vraiment dynamique, bien que basé sur des conventions de dénomination prédéfinies pour l'identifiant des éléments, les liens, etc. jsfiddle et le code que vous pouvez copier coller dans une seule page html statique:
la source
Voici un très bon tutoriel sur la façon de construire un menu contextuel personnalisé avec un exemple de code de travail complet (sans JQuery et autres bibliothèques).
Vous pouvez également trouver leur code de démonstration sur GitHub .
Ils donnent une explication détaillée étape par étape que vous pouvez suivre pour créer votre propre menu contextuel clic droit (y compris le code html, css et javascript) et le résumer à la fin en donnant l'exemple de code complet.
Vous pouvez suivre facilement et l'adapter à vos propres besoins. Et il n'est pas nécessaire d'utiliser JQuery ou d'autres bibliothèques.
Voici à quoi ressemble leur exemple de code de menu:
Un exemple de travail (liste des tâches) peut être trouvé sur codepen .
la source
Vous pouvez le faire avec ce code. visitez ici pour un didacticiel complet avec détection automatique des bords http://www.voidtricks.com/custom-right-click-context-menu/
"
la source
la source
oncontextmenu
événement qui se déclenche (généralement sur un clic droit)Une façon simple de le faire est d'utiliser onContextMenu pour renvoyer une fonction JavaScript:
Et en entrant,
return false;
vous annulerez le menu contextuel.si vous souhaitez toujours afficher le menu contextuel, vous pouvez simplement supprimer la
return false;
ligne.la source
Testé et fonctionne dans Opera 12.17, Firefox 30, Internet Explorer 9 et Chrome 26.0.1410.64
la source
Ce que je fais ici
Utilisez js pour invoquer vos propres actions.
la source
Vous devez vous rappeler si vous souhaitez utiliser la solution Firefox uniquement, si vous souhaitez l'ajouter à l'ensemble du document, vous devez ajouter
contextmenu="mymenu"
à la<html>
balise et non à labody
balise.Vous devez faire attention à cela.
la source
Vous pouvez ajuster et modifier ce code pour créer un menu contextuel plus beau et plus efficace. Quant à la modification d'un menu contextuel existant, je ne sais pas comment faire cela ... Consultez ce violon pour un point de vue organisé. Essayez également de cliquer sur les éléments de mon menu contextuel. Ils devraient vous alerter sur quelques messages impressionnants. S'ils ne fonctionnent pas, essayez quelque chose de plus ... complexe.
la source
J'utilise quelque chose de similaire au jsfiddle suivant
si vous ciblez des navigateurs IE plus anciens, vous devez de toute façon le compléter avec l'attribut 'attachEvent; Cas
la source