Een eerlijke Chrome-extensie eerlijk schrijven is niet zo moeilijk als je zou denken. In deze zelfstudie ga ik u laten zien hoe ik een API heb gebruikt die werd aangeboden door een geweldige zoekservice voor domeinnamen, Domai.nr, en een Chrome-extensie voor hen maakte, gewoon met behulp van hun API.
In deze zelfstudie laat ik u zien hoe ik de Domai.nr Chrome-extensie heb gemaakt met behulp van eenvoudige HTML, CSS en jQuery. De typische workflow van deze extensie kan als volgt worden opgesplitst:
Het is dus niet revolutionair of baanbrekend, maar als je tamelijk vaak naar domeinen op zoek bent (zoals velen van jullie waarschijnlijk wel zijn), heeft het wel degelijk een doel. Ik wilde van deze gelegenheid gebruik maken om u niet alleen te laten zien hoe ik deze specifieke extensie heb gemaakt, maar ook, meer in het algemeen, hoe u een extensie voor de Chrome-webbrowser kunt maken.
Er zijn een paar verschillende soorten Chrome-extensies, maar we zullen een browserextensie maken die een pop-up laat zien wanneer erop wordt geklikt. Google heeft een goed overzicht van wat er in elke extensie staat. Kort gezegd, wat u moet weten, is dat elke extensie een map met bestanden is, net als een website. Ik zal later in de tutorial meer over elk van deze bestanden bespreken, maar de directory van elke extensie bevat de volgende bestanden en deze worden rechtstreeks van Google genomen:
manifest.json-bestand
HTML-bestanden
(tenzij de extensie een thema is)Javascript-bestanden
Het manifestbestand biedt meestal metagegevens over de extensie. Hier definieert u zaken als de naam, versie, pictogram en zelfs rechten.
Domai.nr's API is hier te vinden. We gebruiken de JSON-API, die twee methoden heeft: zoeken en info. Het wordt de JSON-API genoemd omdat het inderdaad JSON retourneert. Beide methoden reageren op een GET-verzoek, dus we kunnen gewoon alles samenvoegen wat we nodig hebben in onze verzoek-URL, en de rest valt op zijn plaats.
manifest.json
het dossierZoals u ziet, is een Chrome-extensie echt niet veel meer dan een standaardwebsite. De structuur die we zullen gebruiken is als volgt:
domainr.html
- dit is gelijk aan de index.html
pagina in de meeste websites. Ik geef er de voorkeur aan het hoofd-HTML-bestand hetzelfde te noemen als de extensie zelf - dat is gewoon een persoonlijke voorkeur.icon.png
- deze 128 px bij 128 px
pictogram is wat de gebruiker ziet in de werkbalk. Wanneer ze op dit pictogram klikken, wordt onze extensie geactiveerd.afbeeldingen/
- deze map bevat alle afbeeldingen die we zullen gebruiken, net als een traditionele website. Ik nam contact op met de makers van Domai.nr en kreeg toestemming om alle afbeeldingen die ze hebben op hun website te gebruiken, alleen verkleind. Ik heb dus Chrome Web Inspector gebruikt en hiervan exemplaren gedownload en dienovereenkomstig geschaald.manifest.json
- de manifest.json
bestand, zoals hierboven uitgelegd, definiëren we veel eigenschappen over onze extensie. Het is verplicht, maar het is vrij eenvoudig om te maken.script.js
- dit JavaScript-bestand is waar al onze jQuery wordt gehouden. We zullen ernaar verwijzen in de domainr.html
bestand en bestuurt alle logica in onze extensie.style.css
- eindelijk, hier is ons stylesheetbestand. We zullen dit natuurlijk ook in de domainr.html
het dossier.Tijd om in onze code te graven en aan de slag te gaan! Onze manifest.json
bestand is vrij eenvoudig. Zie dit voor een gedetailleerder overzicht van alle velden die worden ondersteund in een manifestbestand. U kunt alle code vinden die wordt gebruikt in ons manifest.json-bestand hieronder:
"name": "Domai.nr Search", // de naam van de extensie "version": "1.0", // versienummer "description": "Geef uw domeinen een happy end.", // description used in de Chrome Webstore "browser_action": "default_icon": "icon.png", // geeft het standaardpictogram "popup": "domainr.html" // de pagina die moet worden weergegeven wanneer op het pictogram wordt geklikt, "permissies": ["http://domai.nr", // we geven de extensie toestemming om toegang te krijgen tot gegevens op deze sites. "http://domai.nr/*" // we voegen het toe met een *, dus / api is toegankelijk]
Zoals je aan de reacties kunt zien, is het redelijk eenvoudig. Het toestemmingsgedeelte is in ons geval uitermate belangrijk. Anders krijgen we een XHR-fout omdat de extensie geen toegang heeft tot domeinen waarvoor u geen toestemming hebt gegeven. Vandaar het belang van de sectie "permissies".
Voor onze uitbreiding zullen er in principe drie delen zijn:
element, met een
, Dit is waar de gebruiker de zoekopdracht invoert waarnaar ze op zoek zijn. Dit is waar deze stap van de tutorial zich op zal richten.
met meerdere
elementen erin, die wordt bevolkt op basis van hun verzoek in deel 1.Dus, ik denk dat het redelijk is om te zeggen dat de extensie complexer wordt naarmate de gebruiker verder gaat in die delen of stadia die hierboven zijn beschreven. Met dat gezegd zijnde, laten we ingaan op de HTML die ik gebruikte om dit te structureren.
Domai.nr Chrome-extensie Oke, dat is het, voor zover het de invoer van de gebruiker betreft (nou ja, aan de HTML-zijde, tenminste). Om een beetje meer beschrijvend te zijn, is die code wat de gebruiker te zien krijgt wanneer ze op het pictogram klikken om de extensie te activeren. Het is gewoon een invoervak dat we zullen stylen om er uit te zien als de site van domai.nr. Je zult merken dat ik alleen een
En nu is het tijd om te testen. Maar laat je niet hopen, want het ziet er behoorlijk lelijk uit?
Ervan uitgaande dat alles in orde is, zou u nu een lijst moeten zien van alle domeinen gerelateerd aan een zoekopdracht van de gebruiker (zoals hierboven). Hoewel het inderdaad vrij lelijk is, hebben we onze extensie nu correct gekoppeld aan de zoekmethode van de Domai.nr API en halen we de resultaten correct terug. Proficiat!
Voordat we verdergaan naar het laatste deel van de tutorial, moeten we echter wel wat opruimen. We moeten het pictogram weergeven dat aangeeft of het domein beschikbaar is, misschien beschikbaar is of is gemaakt en ook het uiterlijk van de lijst opschonen. Sommige eenvoudige CSS zorgen daar zonder problemen voor.
ul weergave: blok; beiden opschonen; margin: 0; opvulling: 0; ul li font-size: 15px; color: # 333333; weergave: blok; Breedte: 100%; line-height: 24px; margin-left: 10px; Breedte: 100%; positie: relative; ul li .bg width: 15px; hoogte: 15px; weergave: blok; float: left; ul .available .bg background: url ("images / available.png") 0 7px no-repeat; breedte: 15px; hoogte: 19px; weergave: blok; float: left; margin-left: 10px; ul .nothing .bg width: 15px; hoogte: 19px; weergave: blok; float: left; margin-left: 10px; ul .maybe .bg background: url ("images / maybe.png") 0 7px no-repeat; breedte: 15px; hoogte: 19px; weergave: blok; zweven: links; margin-left: 10px; ul li a color: # 2870B0; tekstdecoratie: geen; Breedte: 100%; weergave: block; .loader-sub position: absolute; rechts: 38px; top: 4px; ul li a: hover background: url ("images / grey.png") no-repeat links bovenaan; cursor: pointer; # resultaten-info a: hover background: none; tekstdecoratie: onderstrepen; cursor: pointer; # resultaten-info h3 margin-top: 11px; text-align: center; weergave: blok; width: 340px; # results-info .available color: # 23B000! important; text-shadow: rgba (100%, 100%, 100%, 1.0) 0 1px 2px; font-size: 24px; ul li a.active background: url ("images / blue.png") no-repeat links bovenaan; color: #ffffff;
Fantastisch - nu ziet alles er netjes en schoon uit, net als de echte Domai.nr-site! Eindelijk is het tijd om naar de goede dingen te gaan.
Dit laatste gedeelte verandert de gebruikersinterface van de extensie het meest, maar als we het in stappen opsplitsen, is het helemaal niet zo erg.
Oké, laten we dit goed doordenken. Ten eerste, als de gebruiker op een doamain klikt, willen we dat de pop-up groter wordt en informatie over dat specifieke domein weergeven. Geen enkel probleem. We moeten echter een beetje meer structuur toevoegen aan onze code om deze precies goed te krijgen.
Aanmelden bij:
TLD:
- Wikipedia
- IANA
Hulpmiddelen:
- Bezoek site (www)
- WIE IS
Mogelijk gemaakt door Domai.nr.
Dus, de opmerkingen moeten voldoende verklarend zijn voor die HTML-structuur, maar we zullen niet veel opmerken totdat we onze extensie wat meer interactiviteit geven. Nu we de structuur naar beneden halen, laten we het doen door wat jQuery toe te voegen.
$ ("# resultatenlijst a"). live ('klik', functie () // 'live' is vereist, omdat de elementen de DOM vullen nadat de gebruiker naar iets zoekt, niet onLoad. $ (this). broers en zussen ('. loader-sub'). css ('visibility', 'visible'); // verberg de secundaire loader $ (". extension a"). first (). remove (); // verwijder de vorige extensie (link naast 'TLD'). $ (". registrars ul li"). remove (); // verberg de vorige egistrar's
Die code hierboven is geladen in alle informatie die we nodig hebben voor de Wikipedia-URL, IANA-URL, Whois-informatie, sitekoppeling en uitbreidingsinformatie. Hieronder zullen we bekijken hoe ik de registrar-informatie heb geladen, onder andere!
// de code hierboven? if (json.registrars.length < 1) // if there are no registrars available $(".registrars ul").append('
Fantastisch! De informatie wordt nu geladen, maar het ziet er behoorlijk verward uit. Geen zorgen, voeg gewoon de volgende CSS toe om het er allemaal mooi uit te laten zien en een einde te maken aan de oefening van vandaag.
#left float: left; Breedte: 250 pixels; padding-bottom: 10px; # results-info float: right; width: 510px; display: none; .register-stuff overflow: hidden;. right float: right; .extension float: right; font-size: 13px; margin-right: 70px; # load-more color: # 6C9DC9; font-size: 12px; line-height: 18px; abbr float: left; # resultaten-info h4 margin-bottom: 9px; lettergrootte: 16px; lettertype: vet; vertical-align: top; margin-top: 0; # resultaten-info .secties> li positie: relatief; zweven: links; breedte: 140 px; border-left: 1px solid # A9ADA8; padding-links: 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; weergeven: inline; #footer overflow: hidden; font-size: 11px; kleur: # 666; hoogte: 20px; beiden opschonen; margin-right: 15px; #footer p margin: 0; padding: 0; text-align: right; #footer p a color: # 666; #footer p a: hover color: # 333333;
En daar heb je het! Gefeliciteerd, je hebt zojuist een handige Chrome-extensie gemaakt met behulp van de API van een geweldige service! Ik bouwde dit uit terwijl ik in een luchthaven wachtte op een tussenstop; dat helpt om te bewijzen hoe eenvoudig en snel een van deze kan zijn. Eerlijk gezegd, een Chrome-extensie is niet moeilijker dan een gewone webpagina. Als u nog vragen heeft, laat ze dan achter in de opmerkingen hieronder!