Maison >interface Web >js tutoriel >10 choses qu'ils ne vous disent jamais à l'école d'extension de Firefox
Ceci est un article de suivi de mon récent ebook, Build Your Own Firefox Extension - une sélection supplémentaire de conseils, astuces et hacks utiles que j'ai collectés dans mon expérience avec les extensions de construction pour Firefox, y compris CodeBurner, l'extension de référence du point de point. La connaissance de base de la façon de construire une extension Firefox est supposée, vous pouvez donc d'abord prendre votre copie gratuite de l'ebook, si vous ne l'avez pas encore fait.
La plupart de ce qui est ici n'est pas explicitement documenté au Mozilla Developer Center (MDC), soit parce qu'il est toujours sur leur liste de «faire», soit parce que je l'ai inventé moi-même. Une partie est bien documentée, mais il est tellement utile que je pensais que cela valait la peine de s'y rendre toute l'attention. Fonctions de niveau supérieur (en utilisant le mot clé de la fonction). En pratique cependant, vous devez les créer comme méthodes de votre objet d'extension principal.
Les plats clés
Utilisez le `list-style-image` pour ajouter des icônes à des éléments Xul comme` `,`
`, et`Une fois que cela a fait, vous pouvez utiliser les touches de flèche pour basculer entre les onglets, tout comme dans Windows et Linux.
textbox[type="search"] <br>{ <br> list-style-image:url(chrome://myextension/content/images/magglass.png); <br>}
<tab> elements are natively inaccessible to the keyboard in Firefox for Mac OS X. To make them accessible you need to manually insert them into the tab order, by adding a tabindex attribute with the value 0. This value is effectively "auto", and places the element at its source-order position in the overall tab order:Un onglet de clavier dans le clavier dans Mac OS X
<tab label="About" tabindex="0"/>
Lorsque vous cliquez sur un élément dans un menu contextuel XUL, la référence cible de l'événement est à la
C'est incroyablement simple, car Firefox fournit une propriété qui contient cette référence. Il s'appelle PopupNode et est une propriété du document. La façon la plus simple de l'utiliser est de le passer par l'événement de commande de l'élément de menu:
textbox[type="search"] <br>{ <br> list-style-image:url(chrome://myextension/content/images/magglass.png); <br>}
Si vous ajoutez l'attribut Flex à la plupart des éléments Xul, ils se développent pour remplir l'espace disponible. Mais Flex est hérité, donc ses enfants se dilatent également , ce qui, dans certains cas, est très indésirable. Par exemple, si l'élément enfant est une
Mais il n'héréte qu'à un niveau de profondeur, de sorte que vous pouvez le nier en ajoutant un élément de wrapper intermédiaire, sans attribut flexible déclaré:
<tab> elements are natively inaccessible to the keyboard in Firefox for Mac OS X. To make them accessible you need to manually insert them into the tab order, by adding a tabindex attribute with the value 0. This value is effectively "auto", and places the element at its source-order position in the overall tab order:
Si vous utilisez Window.OpenDialog pour engendrer une boîte de dialogue avec les fonctionnalités modales et centres-écran de l'événement Chrome Load, la boîte de dialogue sera principalement invisible dans Mac OS X, caché dans le coin supérieur à gauche de l'écran. En effet, la boîte de dialogue est positionnée avant l'établissement de la taille de la fenêtre, de sorte que la propriété CentersCreen ne fonctionne pas comme prévu. Le même problème se produit avec la fonction d'alerte, ce qui peut être un problème si vous l'utilisez comme un outil de débogage rapide et sale.
Une solution consiste à envelopper la fonction OpenDialog ou Alert dans un jeu rapide. Cela garantit que la fenêtre principale est dimensionnée avant que la boîte de dialogue ne se déclenche, elle sera donc positionnée correctement:
<tab label="About" tabindex="0"/>
pour ajouter une icône personnalisée à une boîte de dialogue, créez d'abord un dossier nommé icônes dans le répertoire Chrome de votre extension. Ensuite, à l'intérieur du dossier Icônes, créez un autre dossier appelé par défaut. Dans le dossier par défaut, enregistrez une icône avec le même nom que l'identifiant de l'élément
, par exemple, si la boîte de dialogue avait l'ID MyExtension-Preferences, vous créeriez une icône appelée MyExtension-Preferences.ico (pour Windows, ou .png pour Linux). La documentation MDC indique d'utiliser des images XPM pour Linux, mais elles manquent de prise en charge de la transparence du canal alpha. Les fichiers PNG fournissent un support, et ils fonctionnent aussi bien.
Dans Windows, l'icône apparaîtra également dans la barre des tâches:
Une icône de dialogue personnalisée dans Windows XP
Cela diffère à Mac OS X, car ses boîtes de dialogue sont affichées sans icônes.
Vous pouvez utiliser l'interface du médiateur de fenêtre de Firefox pour obtenir une référence à la fenêtre du navigateur la dernière. Cela peut être utile si vous vouliez ouvrir un lien Web à partir d'une boîte de dialogue externe, et est plus fiable que Window.Opener.
Voici une petite méthode courte et douce qui renvoie la référence de la fenêtre, ou null si aucune fenêtre de navigateur n'est ouverte:
textbox[type="search"] <br>{ <br> list-style-image:url(chrome://myextension/content/images/magglass.png); <br>}
En suivant la pointe précédente, nous pouvons itérer dans toutes les fenêtres du navigateur ouvert, extraire leurs URL et les emballer dans un tableau hiérarchique (groupé d'abord par fenêtre, puis par onglet).
La méthode suivante fait précisément cela. Chaque membre de la matrice finale est lui-même un tableau, contenant l'URL de l'onglet et un drapeau booléen (sélectionné) pour indiquer s'il s'agit de l'onglet actuellement sélectionné dans cette fenêtre:
<tab> elements are natively inaccessible to the keyboard in Firefox for Mac OS X. To make them accessible you need to manually insert them into the tab order, by adding a tabindex attribute with the value 0. This value is effectively "auto", and places the element at its source-order position in the overall tab order:
la plupart des fenêtres MAC modifient leur apparence lorsque la fenêtre perd la focalisation: arrière-plans plus légers, décorations de fenêtres ou boutons grisés, par exemple. Pour implémenter cet effet sur vos propres contrôles d'interface, vous devez savoir quand la fenêtre gagne et perd la concentration.
Votre premier instinct pourrait être d'utiliser la concentration de la fenêtre et des événements brouillants, mais il s'avère qu'ils ne sont pas fiables à cet effet, car ils se comportent parfois de manière non intuitive. Par exemple, si la mise au point de l'application se déplace vers un document dans un Faites attention à la façon dont vous l'utilisez. Par exemple, si vous l'avez utilisé pour déclencher une boîte de dialogue modale telle que Alert, l'action de reproduire la boîte de dialogue entraînerait la fin de la fenêtre; Le rejeter retrouverait l'objectif, ce qui rééduquerait la boîte de dialogue! Alternativement, si l'effet que vous souhaitez réaliser peut être réalisé avec Pure CSS, vous pouvez utiliser un sélecteur d'attribut avec la pseudo-classe de négation. Par exemple, pour changer une icône entre ses états normaux et handicapés: Firefox est disponible sur plusieurs plates-formes, et chacune d'elles a ses propres conventions en ce qui concerne l'apparence et même le placement des composants d'interface. Un bon exemple de ceci est les boutons OK et Annuler dans une boîte de dialogue d'alerte: sur Windows et Linux, le bouton OK est à gauche du bouton Annuler, tandis que sur Mac OS, c'est l'inverse. L'apparence des boutons de fenêtre fermés et minimiques est une autre instance, car ils diffèrent pour chaque plate-forme. Ainsi, compte tenu de ces variations, il est souvent utile de pouvoir appliquer des feuilles de style spécifiques à la plate-forme à l'interface de votre propre extension. Cela vous permet d'implémenter des variations telles que des icônes alternatives pour les boutons, différentes polices pour les contrôles d'interface personnalisées, etc. Le dossier de plate-forme de niveau supérieur dans le diagramme suivant doit entrer dans le dossier racine de votre extension - au même niveau que le dossier Chrome. Tous les noms de dossiers et noms de fichiers doivent être exactement comme indiqué ici (ils sont également sensibles à la casse), à l'exception du nom de la feuille de style elle-même; Cela peut être tout ce que vous aimez, mais bien sûr, il doit être le même pour la copie de chaque plate-forme. La hiérarchie du dossier pour les feuilles de style spécifiques à la plate-forme Voici un conseil de bonus supplémentaire. La référence XUL à MDC vous explique comment créer une zone de texte avec l'historique automatique. Malheureusement, il ne vous explique pas comment ajouter de nouvelles URL à l'histoire, j'ai donc dû résoudre ce problème à la dure, en traçant le code source de Firefox. La méthode que je vais vous montrer ici ajoute des URL, récupère et sauve des favicons, et inclut l'historique de base automatique à la bonne affaire! Remarque : L'ajout de l'historique du navigateur fonctionnera dans Firefox 3 ou plus tard, mais la récupération de Favicon ne fonctionnera que dans la version 3.5 ou plus tard. attributs. Dans l'exemple de code suivant, le nom de fonction addurltohistory peut être tout ce que vous voulez, et l'attribut Flex est facultatif, mais tout le reste doit être exactement comme indiqué: Notez comment la fonction de commande est déclenchée par Onkeydown, plutôt que sur oncommand. C'est parce que l'élément Ce que nous avons ici est déjà suffisant pour une boîte d'historique fonctionnelle. Vous pouvez taper ou coller du texte dans la zone de texte et un menu déroulant apparaîtra avec votre historique, filtré en fonction de ce qui a été entré. Vous pouvez ensuite sélectionner dans ce menu, et votre sélection sera écrite dans la zone de texte. Vous pouvez également ajouter un bouton Arrow pour faire apparaître le menu déroulant en ajoutant ActiverHistory = "true". Alors, regardons maintenant la fonction de commande qui est licenciée lorsque vous appuyez sur Entrée. En pratique, vous effectuez une autre tâche après cela, (comme le chargement de l'URL spécifié dans un Ensuite, nous faisons l'entreprise qui ajoute réellement l'URL à l'histoire. Le service d'histoire n'acceptera pas une chaîne URI ordinaire, nous devons donc créer ce qu'on appelle un iuri. Il s'agit d'un objet URI qui contient une variété de métadonnées, y compris son hôte, qui sera utile plus tard. Nous créons l'objet IURI à l'aide du service IO, puis passons cela au service d'histoire mondiale, pour l'ajouter à l'historique du navigateur. Le reste du code est pour saisir le favicon, et cela est enveloppé dans un bloc d'essai ... Catch pour deux raisons. Premièrement, afin qu'une erreur ne soit pas lancée si, pour une raison quelconque, le Favicon ne soit pas à l'URL attendue, et deuxièmement, car il ne fonctionne que dans Firefox 3.5 ou plus tard. Ainsi, nous initialisons d'abord le service Favicon, puis créons un objet IURI pour l'adresse de Favicon (en utilisant le nom d'hôte de l'IURI d'origine). Nous passons ensuite l'objet Favicon Iuri au service Favicon, pour charger et enregistrer le favicon. Et là nous l'avons! La prochaine fois que nous saisirons cette même adresse dans la zone de texte, elle apparaîtra dans le menu automatique, ainsi que son favicon. Notez que le processus Favicon est asynchrone. Si vous souhaitez l'afficher immédiatement dans la zone de texte, vous devez exécuter une boucle SetInterval pour vérifier continuellement s'il existe encore. Vous pouvez le faire avec du code comme celui-ci: Ce code est un peu délicat: toutes les 500 millisecondes (le deuxième paramètre à définir INTERVAL), nous demandons le service FAVICON pour le FAVICON de la page. Il renverra un URI formaté soit avec le protocole Moz-Anno: Favicon: (si le favicon a été téléchargé) ou avec le protocole Chrome: (s'il renvoie l'image par défaut). Si nous avons essayé 20 fois (un total de 10 secondes), ou si nous avons téléchargé avec succès un favicon pour la page - comme indiqué par Moz-Anno: Favicon: dans l'URI - alors nous l'avons défini comme l'URL d'image de style liste pour la liste des TextBox. Nous allons tout pour la liste des conseils rapides. Si vous ne l'avez pas déjà fait, téléchargez mon ebook Build votre propre extension Firefox qui est gratuite avec l'extension CodeBurner. Gardez un œil vigilant pour un autre article sur la construction d'extensions de Firefox, ainsi que de nouveaux ajouts à la famille CodeBurner, à venir bientôt! L'installation d'extensions de Firefox est un processus simple. Tout d'abord, ouvrez votre navigateur Firefox et cliquez sur le bouton de menu, qui est représenté par trois lignes horizontales dans le coin supérieur droit. Dans le menu déroulant, sélectionnez les «modules complémentaires». Cela ouvrira l'onglet Manager des modules complémentaires. Dans la barre de recherche, saisissez le nom de l'extension que vous souhaitez installer et appuyez sur Entrée. Cliquez sur le bouton «Ajouter à Firefox» à côté de l'extension que vous souhaitez installer. Un pop-up semblera demander votre autorisation pour ajouter l'extension. Cliquez sur «Ajouter» et l'extension sera installée. Il pourrait y avoir plusieurs raisons pour lesquelles vos extensions de Firefox ne fonctionnent pas. Cela pourrait être dû à une version obsolète de Firefox, entre en conflit avec d'autres extensions ou des problèmes avec l'extension elle-même. Essayez de mettre à jour Firefox vers la dernière version, en désactivant d'autres extensions pour vérifier les conflits ou réinstaller l'extension problématique. Si le problème persiste, contactez le développeur d'extension pour prendre en charge. pour gérer vos extensions Firefox, ouvrez le menu Firefox et sélectionnez «Add-ons». Cela ouvrira l'onglet Manager des modules complémentaires. Ici, vous pouvez activer ou désactiver les extensions, supprimer les extensions ou accéder aux options pour chaque extension. Oui, certaines extensions de Firefox peuvent ralentir votre navigateur, surtout si de nombreuses extensions sont installées. Chaque extension utilise une certaine quantité de ressources système et en avoir trop peut ralentir votre navigateur. Si vous remarquez que votre navigateur fonctionne lentement, essayez de désactiver certaines extensions pour voir si elle s'améliore. La plupart des extensions de Firefox sont sûres à utiliser. Cependant, comme tout logiciel, ils peuvent potentiellement être exploités par des acteurs malveillants. Pour assurer votre sécurité, n'installez que les extensions à partir de sources de confiance, gardez vos extensions à jour et révisez régulièrement les autorisations de vos extensions. Firefox vérifie automatiquement les mises à jour de vos extensions. Cependant, vous pouvez également vérifier manuellement les mises à jour en ouvrant le menu Firefox, en sélectionnant «Add-ons», puis en cliquant sur l'icône de l'équipement et en sélectionnant «Vérifier les mises à jour». Actuellement, seul un nombre limité d'extensions de Firefox est disponible pour le mobile. Pour vérifier si une extension est disponible pour mobile, visitez la page de l'extension sur le site Web des modules complémentaires Firefox et recherchez l'étiquette «disponible pour Android». Pour développer votre propre extension Firefox, vous aurez besoin d'avoir une compréhension de base des technologies Web comme HTML, CSS et Javascript. Mozilla fournit un guide complet sur la façon de développer des extensions de Firefox sur leur site Web de développeur. Les meilleures extensions de Firefox à utiliser dépendent de vos besoins. Certaines extensions populaires incluent l'origine ublock pour le blocage des publicités, la gestion des mots de passe et le lecteur sombre pour le mode sombre. Certaines extensions chromées peuvent être utilisées sur Firefox à l'aide d'une extension appelée Chrome Store Foxified. Cependant, toutes les extensions chromées ne fonctionneront pas sur Firefox en raison de différences dans la façon dont les deux navigateurs gèrent les extensions. <tab label="About" tabindex="0"/>
textbox[type="search"] <br>{ <br> list-style-image:url(chrome://myextension/content/images/magglass.png); <br>}
10. Implémentez les feuilles de style spécifiques à la plate-forme
au cas où elle était moins qu'évidence, "Darwin" est Mac Os X, "Winnt" est Windows et "Linux" est… er… Linux. Chacun de ces fichiers Chrome.Manifest doit contenir cette ligne délimitée par l'onglet identique (en remplacement de «MyExtension» par le nom de votre extension):
<tab> elements are natively inaccessible to the keyboard in Firefox for Mac OS X. To make them accessible you need to manually insert them into the tab order, by adding a tabindex attribute with the value 0. This value is effectively "auto", and places the element at its source-order position in the overall tab order:
Voir comment tout ce que vous devez faire est de référer au répertoire peau, et Firefox déterminera la feuille de style spécifique à inclure, selon la plate-forme sur laquelle il fonctionne. Vous pouvez étendre le principe avec autant de feuilles de style différentes que vous le souhaitez: créez simplement une version dans chacun des dossiers de plate-forme, puis ajoutez-le à un document XUL en utilisant le même modèle d'URL. <tab label="About" tabindex="0"/>
Une zone de texte avec un menu automatique d'historique, montrant les entrées que nous avons ajouté programmatiquement
textbox[type="search"] <br>{ <br> list-style-image:url(chrome://myextension/content/images/magglass.png); <br>}
<tab> elements are natively inaccessible to the keyboard in Firefox for Mac OS X. To make them accessible you need to manually insert them into the tab order, by adding a tabindex attribute with the value 0. This value is effectively "auto", and places the element at its source-order position in the overall tab order:
textbox[type="search"] <br>{ <br> list-style-image:url(chrome://myextension/content/images/magglass.png); <br>}
Questions fréquemment posées (FAQ) sur les extensions de Firefox
Comment puis-je installer des extensions Firefox?
Pourquoi mes extensions de Firefox ne fonctionnent-elles pas?
Comment puis-je gérer mes extensions de Firefox?
Les extensions de firefox peuvent-elles ralentir mon navigateur?
Les extensions de Firefox sont-elles sûres?
Comment puis-je mettre à jour mes extensions de Firefox?
Puis-je utiliser des extensions de Firefox sur mobile?
Comment puis-je développer ma propre extension Firefox?
Quelles sont les meilleures extensions de Firefox à utiliser?
Puis-je utiliser des extensions de chrome sur Firefox?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!