Écrire honnêtement une extension Chrome astucieuse n’est pas aussi difficile que vous ne le pensez. Dans ce tutoriel, je vais vous expliquer comment j'ai pris une API proposée par un excellent service de recherche de noms de domaines, Domai.nr, et leur ai créé une extension Chrome, à l'aide de leur API..
Dans ce didacticiel, je vais vous expliquer comment j'ai créé l'extension Chrome Domai.nr, à l'aide de HTML simple, de CSS et de jQuery. Le flux de travail typique de cette extension peut être décomposé de la manière suivante:
Donc, ce n'est pas révolutionnaire ou révolutionnaire, mais lorsque vous recherchez des domaines assez fréquemment (comme beaucoup d'entre vous, j'en suis sûr), cela sert effectivement un objectif. Je voulais profiter de cette occasion pour vous montrer non seulement comment j'ai créé cette extension spécifique, mais aussi, plus généralement, comment créer une extension pour le navigateur Web Chrome..
Il existe différents types d'extensions Chrome, mais nous allons créer une extension d'action de navigateur qui affiche une fenêtre contextuelle lorsque vous cliquez dessus. Google a une vue d'ensemble de ce qu'il y a dans chaque extension. Ce que vous devez savoir, en gros, c’est que chaque extension est un répertoire de fichiers, un peu comme un site Web. Nous parlerons plus en détail de chacun de ces fichiers plus tard dans le didacticiel, mais le répertoire de chaque extension contient les fichiers suivants, qui proviennent directement de Google:
fichier manifest.json
Fichiers HTML
(sauf si l'extension est un thème)Fichiers javascript
Le fichier manifeste fournit principalement des méta-informations sur l'extension. C’est là que vous définissez des éléments tels que le nom, la version, l’icône et même les autorisations..
L'API de Domai.nr est disponible ici. Nous utilisons l'API JSON, qui a deux méthodes: Recherche et Info. Cela s'appelle l'API JSON car, eh bien, elle renvoie JSON. Les deux méthodes répondent à une requête GET. Nous pouvons donc concaténer tout ce dont nous avons besoin dans notre URL de requête, et le reste se mettra en place..
manifest.json
FichierComme vous pouvez le constater, une extension Chrome n'est vraiment pas beaucoup plus qu'un site Web de base. La structure que nous allons utiliser est la suivante:
domainr.html
- c'est équivalent à la index.html
page dans la plupart des sites Web. Je préfère nommer le fichier HTML principal de la même manière que l'extension elle-même - ce n'est qu'une préférence personnelle.icon.png
- ce 128px par 128px
L'icône est ce que l'utilisateur voit dans la barre d'outils. Quand ils cliquent sur cette icône, il déclenchera notre extension.images/
- Ce répertoire contient toutes les images que nous allons utiliser, tout comme un site Web traditionnel. J'ai contacté les créateurs de Domai.nr et obtenu l'autorisation d'utiliser toutes les images qu'ils ont sur leur site Web, simplement réduites. Je viens donc d'utiliser Web Inspector de Chrome et d'en télécharger des copies, puis de les redimensionner en conséquence..manifest.json
- la manifest.json
fichier, comme expliqué ci-dessus, est où nous définissons de nombreuses propriétés sur notre extension. C'est nécessaire, mais c'est assez simple à créer.script.js
- Ce fichier JavaScript est l'endroit où tout notre jQuery est tenu. Nous allons le référencer dans le domainr.html
fichier, et il contrôlera toute la logique de notre extension.style.css
- enfin, voici notre fichier de feuille de style. Nous allons évidemment aussi faire référence à cela dans le domainr.html
fichier.Il est temps de plonger dans notre code et de commencer! Notre manifest.json
le fichier est assez simple. Pour voir un résumé plus détaillé de tous les champs pris en charge dans un fichier manifeste, consultez cette rubrique. Vous pouvez trouver tout le code utilisé dans notre fichier manifest.json ci-dessous:
"name": "Domai.nr Search", // le nom de l'extension "version": "1.0", // numéro de version "description": "Donnez à vos domaines une fin heureuse.", // description utilisée dans la boutique en ligne Chrome "browser_action": "default_icon": "icon.png", // spécifie l'icône par défaut "popup": "domainr.html" // la page à afficher lorsque l'utilisateur clique sur l'icône, "permissions": ["http://domai.nr", // nous donnons à l'extension la permission d'accéder aux données de ces sites. "http://domai.nr/*" // on le suffixe avec un *, donc / api est accessible]
Comme vous pouvez le constater d'après les commentaires, c'est assez simple. La section des autorisations est extrêmement importante dans notre cas. Sinon, nous aurons une erreur XHR car l'extension ne peut pas accéder aux domaines pour lesquels vous ne lui donnez pas l'autorisation. D'où l'importance de la section "permissions".
Pour notre extension, il y aura essentiellement trois parties:
élément, avec un
, c'est là que l'utilisateur tape la requête qu'il recherche. C’est ce sur quoi cette étape du didacticiel se concentrera..
avec plusieurs
éléments à l'intérieur de celui-ci, qui sont remplis en fonction de leur demande dans la partie 1.Donc, je pense qu’il est juste de dire que l’extension gagne en complexité à mesure que l’utilisateur avance dans les parties ou les étapes décrites ci-dessus. Cela étant dit, creusons dans le code HTML que j’avais utilisé pour structurer cette.
Domai.nr Chrome Extension Très bien - c'est tout, en ce qui concerne l'obtention de la contribution de l'utilisateur (enfin, du côté HTML, au moins). Pour être un peu plus descriptif, ce code est ce que l’utilisateur verra s’il clique sur l’icône pour déclencher l’extension. Il s’agit simplement d’une zone de saisie qui ressemble au site de domai.nr. Vous remarquerez que je n'ai qu'un
Et maintenant il est temps de tester. Cependant, n'espérez pas trop, car ça va avoir l'air moche?
En supposant que tout va bien, vous devriez maintenant voir une liste de tous les domaines liés à une requête dans laquelle l'utilisateur tape (comme ci-dessus). Bien que cela soit effectivement très laid, nous avons maintenant notre extension correctement connectée à la méthode de recherche de l'API de Domai.nr et nous récupérons correctement les résultats. félicitations!
Avant de passer à la dernière section du didacticiel, nous avons toutefois du travail de nettoyage à faire. Nous devons afficher l'icône qui indique si le domaine est disponible, éventuellement disponible ou pris, et également nettoyer l'apparence de la liste. Quelques CSS simples s’occuperont de cela sans problème.
ul display: block; clarifier les deux; marge: 0; padding: 0; ul li taille de la police: 15px; couleur: # 333333; bloc de visualisation; largeur: 100%; hauteur de ligne: 24px; marge gauche: 10px; largeur: 100%; position: relative; ul li .bg width: 15px; hauteur: 15px; bloc de visualisation; float: left; ul .available .bg background: url ("images / available.png") 0 7px no-repeat; largeur: 15px; hauteur: 19px; bloc de visualisation; float: gauche; margin-left: 10px; ul .nothing .bg width: 15px; hauteur: 19px; bloc de visualisation; float: gauche; margin-left: 10px; ul .maybe .bg background: url ("images / Maybe.png") 0 7px no-repeat; largeur: 15px; hauteur: 19px; bloc de visualisation; float: gauche; margin-left: 10px; ul li a color: # 2870B0; texte-décoration: aucun; largeur: 100%; display: block; .loader-sub position: absolute; à droite: 38px; top: 4px; ul li a: hover background: url ("images / grey.png") non répété à gauche en haut; curseur: pointeur; # results-info a: survol background: none; texte-décoration: souligné; curseur: pointeur; # result-info h3 margin-top: 11px; text-align: center; bloc de visualisation; width: 340px; # results-info .available color: # 23B000! important; texte-ombre: rgba (100%, 100%, 100%, 1,0) 0 1px 2px; taille de la police: 24px; ul li a.active background: url ("images / blue.png") no-repeat left top; couleur: #ffffff;
Génial - maintenant, il est beau et propre - tout comme le vrai site Domai.nr! Enfin, il est temps de passer aux bonnes choses.
Cette dernière section modifie le plus l'interface utilisateur de l'extension, mais si nous la décomposons en étapes, ce n'est pas mal du tout.
Okay - réfléchissons-y bien. Tout d’abord, lorsque l’utilisateur clique sur une tâche principale, nous souhaitons que la fenêtre contextuelle s’élargisse et affiche des informations sur ce domaine spécifique. Aucun problème du tout. Cependant, nous aurons besoin d'ajouter un peu plus de structure à notre code pour qu'il soit juste.
Inscrivez-vous à:
TLD:
- Wikipédia
- IANA
Outils:
- Visitez le site (www)
- QUI EST
Propulsé par Domai.nr.
Donc, les commentaires devraient être suffisamment explicatifs pour cette structure HTML, cependant, nous ne remarquerons pas grand chose tant que nous n'aurons pas donné plus d'interactivité à notre extension. Maintenant que nous avons la structure, allons-y et ajoutons un peu de jQuery.
$ ("# results-list a"). live ('click', function () // 'live' est requis, car les éléments remplissent le DOM après que l'utilisateur a recherché quelque chose; pas onLoad. $ (this). siblings ('. loader-sub'). css ('visibilité', 'visible'); // masque le chargeur secondaire $ (". extension a"). first (). remove (); // supprime l'extension précédente (lien à côté de "TLD"). $ (". registrars ul li"). remove (); // masque le précédent égalisateur
Le code ci-dessus est chargé dans toutes les informations dont nous avons besoin pour l'URL Wikipedia, l'URL IANA, les informations Whois, le lien de site et les informations d'extension. Ci-dessous, nous verrons comment j'ai chargé les informations du registraire, entre autres choses.!
// le code ci-dessus? if (json.registrars.length < 1) // if there are no registrars available $(".registrars ul").append('
Fantastique! L'information est en train de charger, mais elle a l'air bien foutue. Pas de soucis, il suffit d'ajouter le code CSS suivant pour que tout soit beau et pour mettre fin à l'exercice d'aujourd'hui.
#left float: left; largeur: 250px; padding-bottom: 10px; # results-info float: right; largeur: 510px; display: none; .register-stuff débordement: masqué; .right float: right; .extension float: right; taille de police: 13px; margin-right: 70px; # load-more color: # 6C9DC9; taille de police: 12px; hauteur de ligne: 18px; abbr float: left; # résultats-info h4 margin-bottom: 9px; taille de police: 16px; poids de police: gras; alignement vertical: en haut; margin-top: 0; # results-info .sections> li position: relative; float: gauche; largeur: 140px; border-left: 1px solid # A9ADA8; padding-left: 9px; margin-right: 10px; # results-info .sections li ul li margin-left: 0; line-height: 20px; # results-info .sections li ul li a font-size: 13px; display: inline; #footer débordement: masqué; taille de police: 11px; couleur: # 666; hauteur: 20px; clarifier les deux; margin-right: 15px; #footer p margin: 0; rembourrage: 0; text-align: right; #footer p a color: # 666; #footer p a: survol color: # 333333;
Et voila! Félicitations, vous venez de créer une superbe extension Chrome à l'aide de l'API d'un excellent service! J'ai construit ça alors que j'étais dans un aéroport en attente d'une escale; cela aide à prouver à quel point il est simple et rapide de faire l’un d’eux. Honnêtement, une extension Chrome n'est pas plus difficile qu'une page Web classique. Si vous avez des questions, laissez-les dans les commentaires ci-dessous!