avril
2012
HTML5 redéfinit certains aspects et certaines balises du HTML.
Parmi les éléments qui retrouvent une nouvelle jeunesse figure la balise menu.
Bien sûr, évoquer cette balise ne présente que peu d’intérêt puisqu’elle n’est, à l’heure actuelle (et sauf erreur de ma part) reconnue par aucun navigateur…
Par aucun navigateur ? Vraiment ?
En fait, pas tout à fait : parmi les différentes utilisations de la balise menu, une est utilisable par Firefox depuis la version 8 : la personnalisation du menu contextuel lié à un élément de la page (ou de la page elle-même).
La syntaxe de la balise menu est la suivante :
<menu type="..." id="...">
où type correspond au comportement attendu pour le menu et id l’identifiant du menu.
Cette balise peut (dans le cadre du menu contextuel) contenir soit des sous-menus représentés par une nouvelle balise menu soit des éléments de menu représentés par des balises menuitem.
Bon, assez d’explications théoriques, passons à la pratique avec un exemple :
<menuitem label="Aller sur developpez.com" onclick="location.href='http://www.developpez.com'" icon="http://www.developpez.com/template/favicon.ico"></menuitem>
<menu label="Forums developpez.com">
<menuitem label="(X)HTML" onclick="location.href='http://www.developpez.net/forums/f39/webmasters-developpement-web/html-dhtml-xhtml/'" icon="http://www.developpez.com/template/favicon.ico"></menuitem>
<menuitem label="CSS" onclick="location.href='http://www.developpez.net/forums/f463/webmasters-developpement-web/css/'" icon="http://www.developpez.com/template/favicon.ico"></menuitem>
<menuitem label="JavaScript" onclick="location.href='http://www.developpez.net/forums/f23/webmasters-developpement-web/javascript/'" icon="http://www.developpez.com/template/favicon.ico"></menuitem>
<menuitem label="AJAX" onclick="location.href='http://www.developpez.net/forums/f458/webmasters-developpement-web/ajax/'" icon="http://www.developpez.com/template/favicon.ico"></menuitem>
</menu>
</menu>
Dans cet exemple (relativement simple), nous ajoutons des liens vers developpez.com et différents forums du site.
Vous pouvez constater que le type de menu est context pour préciser qu’il s’agit de personnaliser le menu contextuel.
D’autre part, le sous-menu et les éléments des menus possèdent des attributs label indiquant le texte à afficher correspondant à chaque option.
Les éléments de menus possèdent quant à eux des attributs icon (image apposée à côté de l’élément) et onclick (action JavaScript à lancer au clic sur cet élément).
Pour autant, vous aurez beau ajouter cette portion de code dans votre page et faire des clics droits partout dans la page (sur Firefox bien entendu) pour tester, rien ne se passera !
En fait, nous avons oublié l’essentiel : déterminer à quel élément de la page le menu contextuel est associé.
Pour préciser cela, il suffit d’ajouter un attribut contextmenu à l’élément souhaité. La valeur de cet attribut doit correspondre à l’identifiant (attribut id) du menu.
Dans l’exemple suivant, nous posons cet attribut sur la balise body afin que le menu contextuel s’applique sur toute la page :
<html lang="fr">
<head>
<meta charset="utf-8" />
<title>Menu contextuel</title>
<style>
html, body{
height: 100%
}
h1{
text-align: center;
}
</style>
</head>
<body contextmenu="developpez">
<h1>Exemple de menu contextuel personnalisé</h1>
<div>Faites un clic droit dans la page pour voir les options ajoutées au menu contextuel.</div>
<menu type="context" id="developpez">
<menuitem label="Aller sur developpez.com" onclick="location.href='http://www.developpez.com'" icon="http://www.developpez.com/template/favicon.ico"></menuitem>
<menu label="Forums developpez.com">
<menuitem label="(X)HTML" onclick="location.href='http://www.developpez.net/forums/f39/webmasters-developpement-web/html-dhtml-xhtml/'" icon="http://www.developpez.com/template/favicon.ico"></menuitem>
<menuitem label="CSS" onclick="location.href='http://www.developpez.net/forums/f463/webmasters-developpement-web/css/'" icon="http://www.developpez.com/template/favicon.ico"></menuitem>
<menuitem label="JavaScript" onclick="location.href='http://www.developpez.net/forums/f23/webmasters-developpement-web/javascript/'" icon="http://www.developpez.com/template/favicon.ico"></menuitem>
<menuitem label="AJAX" onclick="location.href='http://www.developpez.net/forums/f458/webmasters-developpement-web/ajax/'" icon="http://www.developpez.com/template/favicon.ico"></menuitem>
</menu>
</menu>
</body>
</html>
Notre exemple est maintenant fonctionnel. Vous pouvez voir un exemple en ligne.
1 Commentaire + Ajouter un commentaire
Commentaires récents
- HTML5 : quelques nouveautés de l’API DOM pour JavaScript | CSS3 et HTML5 pratiques | Scoop.it dans HTML5 : quelques nouveautés de l’API DOM pour JavaScript
- transgohan dans HTML5 : quelques nouveautés de l’API DOM pour JavaScript
- BugBlaster dans Les fonctions de rappel (callback) ou les utilisations cachées de eval()
- bisûnûrs dans Personnalisez le menu contextuel avec Firefox
- bisûnûrs dans Comprendre la balise script
Archives
- août 2012
- avril 2012
- février 2012
- janvier 2012
- décembre 2011
- novembre 2011
- octobre 2011
- avril 2009
- mars 2009
- février 2009
- janvier 2009
- décembre 2008
- novembre 2008
- octobre 2008
- septembre 2008
- août 2008
- juillet 2008
- juin 2008
- mai 2008
- avril 2008
- mars 2008
- février 2008
- janvier 2008
- décembre 2007
- novembre 2007
- octobre 2007
- septembre 2007
- août 2007
- juillet 2007
- juin 2007
- mai 2007
- avril 2007
- mars 2007
- novembre 2006



Un article de Bovino
A voir à l’utilisation, mais je crains qu’il y ait de mauvaises intentions à l’utilisation de cet élément, comme mettre en label « Copier le texte » et rediriger sur un tracker publicitaire par exemple.