Kattava opas selainlaajennusten selainyhteensopivuuden ymmärtämiseen ja saavuttamiseen, jotta laajennuksesi toimii saumattomasti eri selaimissa ja käyttöjärjestelmissä maailmanlaajuisesti.
Selainlaajennukset: Selainyhteensopivuuden haasteissa navigointi
Selainlaajennuksista on tullut korvaamattomia työkaluja, jotka parantavat verkon toiminnallisuutta ja käyttäjäkokemusta. Tuottavuuden tehostajista yksityisyyden suojelijoihin, laajennukset vastaavat monenlaisiin tarpeisiin. Kuitenkin laajennuksen kehittäminen, joka toimii virheettömästi kaikissa selaimissa, on merkittävä haaste: selainyhteensopivuus. Tämä opas tarjoaa kattavan yleiskatsauksen näkökohdista, strategioista ja työkaluista, joita tarvitaan rakentamaan laajennuksia, jotka toimivat saumattomasti eri selaimissa ja tavoittavat maailmanlaajuisen yleisön.
Selainyhteensopivuuden tärkeys
Verkon ekosysteemi ei ole monoliittinen. Käyttäjät käyttävät internetiä monilla eri selaimilla, joilla kullakin on oma renderöintimoottorinsa, ominaisuutensa ja käyttäjäkuntansa. Sen varmistaminen, että selainlaajennuksesi toimii oikein kaikissa suurimmissa selaimissa, on ensiarvoisen tärkeää useista syistä:
- Laajemman yleisön tavoittaminen: Yhteensopivan laajennuksen kehittäminen laajentaa potentiaalista käyttäjäkuntaasi. Kun otetaan huomioon selainten maailmanlaajuinen käyttöjakauma, yhteensopivuuden varmistaminen Chromen, Firefoxin, Safarin, Edgen ja muiden kanssa mahdollistaa merkittävästi suuremman yleisön tavoittamisen maailmanlaajuisesti.
- Käyttäjäkokemuksen parantaminen: Huonosti toimiva laajennus tietyssä selaimessa turhauttaa käyttäjiä, mikä johtaa negatiivisiin arvosteluihin ja asennuksen poistoihin. Yhteensopiva laajennus tarjoaa johdonmukaisen, positiivisen kokemuksen käyttäjän selainvalinnasta riippumatta.
- Brändin maineen ylläpitäminen: Luotettava ja laajasti saatavilla oleva laajennus parantaa brändisi mainetta. Se viestii ammattimaisuudesta ja sitoutumisesta monipuolisen käyttäjäkunnan palvelemiseen.
- Tukikustannusten minimointi: Yhteensopivuusongelmien korjaaminen useissa selaimissa kuluttaa resursseja virheenkorjauksen ja asiakastuen muodossa. Yhteensopivan laajennuksen rakentaminen alusta alkaen minimoi nämä kustannukset.
Selainkentän ymmärtäminen
Selainkenttää hallitsevat muutamat suuret toimijat, joilla kullakin on oma arkkitehtuurinsa ja erikoisuutensa. Kunkin selaimen vivahteiden ymmärtäminen on ratkaisevan tärkeää yhteensopivuuden saavuttamiseksi.
- Chrome: Googlen kehittämä Chrome on maailman suosituin selain. Se käyttää Blink-renderöintimoottoria ja tarjoaa vankan laajennus-API:n, mikä tekee siitä suositun kohteen laajennuskehittäjille.
- Firefox: Mozillan kehittämä Firefox käyttää Gecko-renderöintimoottoria ja on tunnettu keskittymisestään yksityisyyteen ja muokattavuuteen. Se tukee laajaa valikoimaa verkkostandardeja ja tarjoaa tehokkaan laajennus-API:n.
- Safari: Applen kehittämä Safari käyttää WebKit-renderöintimoottoria ja on ensisijainen selain macOS- ja iOS-laitteille. Sillä on oma laajennuskehys, joka on vahvasti integroitu Applen ekosysteemiin.
- Microsoft Edge: Chromium-moottorille rakennettu Edge tarjoaa erinomaisen yhteensopivuuden Chrome-laajennusten kanssa ja tarjoaa ominaisuuksia, jotka vetoavat Microsoft-käyttäjiin.
- Opera: Opera käyttää Chromium-moottoria ja ylpeilee ainutlaatuisilla ominaisuuksilla, kuten sisäänrakennetulla VPN:llä ja mainostenesto-ohjelmalla. Se tukee Chrome-laajennuksia ja lisää usein omia parannuksiaan.
Näiden suurten selainten lisäksi muut selaimet, kuten Brave, Vivaldi ja muut, kasvattavat suosiotaan, ja kullakin on omat ominaisuutensa ja selainlaajennusten yhteensopivuuskykynsä. Laajennuskehittäjien tulisi harkita näiden selainten käyttöosuutta, erityisesti kun kohdistetaan markkinarakoihin tai tietyille maantieteellisille alueille.
Selainyhteensopivuuden avainalueet
Useat avainalueet vaativat huolellista huomiota kehitettäessä selainyhteensopivia laajennuksia:
1. Manifest-tiedosto
Manifest-tiedosto (manifest.json
) on jokaisen selainlaajennuksen kulmakivi. Se määrittelee laajennuksen metatiedot, käyttöoikeudet, sisältöskriptit ja muut olennaiset tiedot. On kriittistä varmistaa, että manifest-tiedosto on oikein jäsennelty ja noudattaa kunkin kohdeselaimen määrityksiä.
- Versionumerot: Varmista, että laajennuksesi käyttää yhtenäistä versionumerointia kaikissa selaimissa.
- Käyttöoikeudet: Määrittele huolellisesti laajennuksesi vaatimat käyttöoikeudet. Liialliset käyttöoikeudet voivat herättää tietoturvahuolia ja estää käyttäjiä asentamasta laajennusta.
- Selainkohtaiset manifest-avaimet: Jotkin selaimet vaativat tiettyjä avaimia tai niillä on omat tulkintansa manifest-asetuksista. Käytä ominaisuuksien tunnistusta ja ehdollista logiikkaa näiden erojen käsittelyyn. Esimerkiksi taustaskriptin asennus eroaa joissakin suhteissa Chromen ja Firefoxin välillä.
- Kuvakkeet ja kuvat: Tarjoa sopivat kuvakekoot ja -muodot kullekin selaimelle varmistaaksesi visuaalisesti miellyttävän käyttäjäkokemuksen.
Esimerkki: Yksinkertaistettu manifest-tiedosto:
{
"manifest_version": 3,
"name": "Mahtava laajennukseni",
"version": "1.0",
"description": "Lisää upeita ominaisuuksia verkkoon.",
"permissions": [
"storage",
"activeTab",
"scripting"
],
"action": {
"default_popup": "popup.html"
},
"background": {
"service_worker": "background.js"
}
}
2. Sisältöskriptit
Sisältöskriptit lisäävät JavaScript- ja CSS-koodia verkkosivuille. Ne mahdollistavat laajennusten muokata verkkosivujen sisältöä, olla vuorovaikutuksessa DOM:n kanssa ja reagoida käyttäjän toimiin. Suurin ongelma tässä on varmistaa yhtenäinen JavaScript-suoritus, DOM-manipulaatio ja CSS-renderöinti.
- JavaScript-yhteensopivuus: Testaa JavaScript-koodisi perusteellisesti kaikissa kohdeselaimissa. Käytä moderneja JavaScript-ominaisuuksia varoen tai muunna koodisi Babelin kaltaisella työkalulla varmistaaksesi yhteensopivuuden vanhempien selainten kanssa.
- DOM-manipulaatio: Ole tietoinen hienovaraisista eroista DOM-toteutuksissa eri selaimissa. Testaa koodisi laajasti, erityisesti kun työskentelet tiettyjen DOM-elementtien tai attribuuttien kanssa.
- CSS-tyylit: Varmista, että CSS-tyylisi renderöityvät oikein kaikissa selaimissa. Testaa erilaisia CSS-valitsimia ja -ominaisuuksia ja harkitse selainkohtaisia etuliitteitä tarvittaessa.
- Suorituskontekstit: Ymmärrä, että sisältöskriptit suoritetaan verkkosivun kontekstissa. Tämä voi johtaa mahdollisiin konflikteihin verkkosivuston skriptien kanssa. Hallitse muuttujiasi huolellisesti ja vältä elementtien muokkaamista tavoilla, jotka saattavat rikkoa sivun toiminnallisuuden.
3. Taustaskriptit
Taustaskriptit ajetaan taustalla, silloinkin kun selain ei ole aktiivinen. Ne hoitavat tehtäviä, kuten tapahtumien kuuntelua, pysyvien tietojen hallintaa ja kommunikointia sisältöskriptien kanssa. Taustaskriptit ovat kehittyneet pysyvistä taustasivuista service workereiksi, erityisesti moderneissa selaimissa, mikä lisää merkittäviä uusia monimutkaisuuksia ja etuja laajennuskehitykseen.
- Tapahtumien käsittely: Eri selaimet saattavat käsitellä tapahtumia eri tavoin. Testaa tapahtumankuuntelijasi perusteellisesti ja varmista, että ne laukeavat odotetusti.
- Tallennus-API: Hyödynnä selaimen tallennus-API:a (esim.
chrome.storage
) pysyville tiedoille. Testaa tietojen tallennus- ja hakutoiminnot kussakin selaimessa. - Kommunikaatio: Toteuta selkeä ja luotettava viestintästrategia taustaskriptien, sisältöskriptien ja ponnahdusikkunoiden välillä. Kiinnitä huomiota viestien välitykseen ja vastausaikoihin.
- Service Worker -huomiot: Toteuta service workerit varoen, sillä niiden elinkaaren hallinta eroaa. Varmista, että tehtävät rekisteröidään ja suoritetaan oikein. Vältä pitkäkestoisia tehtäviä, jotka selain voi päättää.
4. Ponnahdusikkunat ja asetus-sivut
Ponnahdusikkunat ja asetus-sivut tarjoavat käyttöliittymän laajennuksellesi. Ne vaativat huolellista huomiota käyttöliittymäsuunnitteluun, responsiivisuuteen ja yhteensopivuuteen.
- HTML ja CSS: Käytä puhdasta, semanttista HTML:ää ja CSS:ää luodaksesi responsiivisen ja saavutettavan käyttöliittymän. Testaa käyttöliittymäsi eri näyttöko'oilla ja laitteilla.
- JavaScript-vuorovaikutus: Käsittele käyttäjän vuorovaikutukset, lomakkeiden lähetykset ja tietojen päivitykset oikein. Testaa tapahtumankuuntelijasi ja käyttöliittymälogiikkasi perusteellisesti.
- Selainkohtaiset käyttöliittymäelementit: Ole tietoinen kaikista selainkohtaisista käyttöliittymäelementeistä tai käytännöistä. Mukauta käyttöliittymäsi vastaamaan kohdeselaimen suunnittelukieltä.
- Saavutettavuus: Suunnittele käyttöliittymäsi saavutettavuus mielessä. Varmista, että käyttöliittymä on navigoitavissa näppäimistöllä, ruudunlukijaystävällinen ja tarjoaa asianmukaisen värikontrastin näkövammaisille käyttäjille. Tarjoa alt-tekstit kuville ja varmista riittävä värikontrasti kaikille tekstielementeille.
5. API-yhteensopivuus
Selainlaajennusten API:t tarjoavat ydintoiminnallisuuden selaimen ja verkkosivujen kanssa vuorovaikutukseen. On olennaista ymmärtää API-eroja eri selaimissa.
- Ominaisuuksien tunnistus: Käytä ominaisuuksien tunnistusta määrittääksesi, mitkä API:t ovat saatavilla nykyisessä selaimessa. Tämä mahdollistaa selainkohtaisten ominaisuuksien siistin käsittelyn ja vaihtoehtoisten toteutusten käyttöönoton.
- API-erot: Ole tietoinen API-eroista esimerkiksi välilehtien hallinnassa, kontekstivalikoissa ja ilmoitus-API:ssa. Mukauta koodisi vastaavasti. Esimerkiksi jotkin API:t käyttävät takaisinkutsuja, kun taas toiset käyttävät Promiseja.
- Asynkroniset operaatiot: Käsittele asynkroniset operaatiot, kuten verkkopyynnöt, tallennusoperaatiot ja tapahtumankuuntelijat, oikein kussakin selaimessa.
- Ristikkäisalkuperäpyynnöt (CORS): Hallitse ristikkäisalkuperäpyyntöjä huolellisesti. Määritä asianmukaiset CORS-otsakkeet palvelimellasi, jotta laajennuksesi voi käyttää resursseja eri verkkotunnuksista.
Strategiat selainyhteensopivuuden saavuttamiseksi
Seuraavien strategioiden toteuttaminen voi parantaa merkittävästi laajennuksesi selainyhteensopivuutta.
1. Kehitä verkkostandardit huomioiden
Verkkostandardien noudattaminen on yhteensopivuuden kulmakivi. Standardien mukaisen HTML:n, CSS:n ja JavaScriptin kirjoittaminen vähentää selainkohtaisten renderöintiongelmien todennäköisyyttä. Käytä moderneja koodauskäytäntöjä ja vältä selainkohtaisia virityksiä aina kun mahdollista. Turvaudu vakiintuneisiin ja laajalti tuettuihin HTML-, CSS- ja JavaScript-API:hin.
2. Käytä ominaisuuksien tunnistusta
Ominaisuuksien tunnistus on tekniikka, jonka avulla voit määrittää, tukeeko nykyinen selain tiettyä ominaisuutta tai API:a. Käytä ominaisuuksien tunnistusta välttääksesi riippuvuutta selainkohtaisesta koodista ja tarjotaksesi siistejä vararatkaisuja. Tämä varmistaa, että laajennuksesi toimii edelleen myös vanhemmissa tai vähemmän ominaisuuksia sisältävissä selaimissa.
if ('storage' in chrome) {
// Käytä chrome.storage API:a
} else if ('storage' in browser) {
// Käytä browser.storage API:a (Firefox)
} else {
// Tarjoa vararatkaisu
}
3. Hyödynnä polyfillejä
Polyfillit ovat koodinpätkiä, jotka tarjoavat puuttuvaa toiminnallisuutta vanhemmille selaimille, joilta puuttuu tuki tietyille ominaisuuksille. Polyfillit täyttävät aukkoja vanhemmissa selaimissa, mahdollistaen modernien JavaScript-ominaisuuksien käytön yhteensopivuudesta tinkimättä. Käytä polyfillejä ominaisuuksille kuten Promiset, fetch ja muut ES6+ -ominaisuudet.
4. Testaa perusteellisesti
Perusteellinen testaus on ratkaisevan tärkeää selainyhteensopivuuden varmistamiseksi. Testaa laajennuksesi kaikissa suurimmissa selaimissa ja käyttöjärjestelmissä. Toteuta tiukka testausstrategia, johon kuuluu:
- Manuaalinen testaus: Testaa laajennuksesi toiminnallisuus manuaalisesti kussakin selaimessa. Tarkista mahdolliset renderöintiongelmat, käyttöliittymän epäjohdonmukaisuudet tai odottamaton käytös.
- Automaattinen testaus: Automatisoi testisi käyttämällä testauskehyksiä, kuten Seleniumia tai Puppeteeria. Tämä mahdollistaa testien ajamisen useammin ja tehokkaammin.
- Käyttäjätestaus: Hanki käyttäjiä eri maantieteellisiltä alueilta ja erilaisilla selainasetuksilla testaamaan laajennustasi todellisissa tilanteissa.
- Jatkuva integraatio ja jatkuva käyttöönotto (CI/CD): Integroi testaus kehitysputkeesi käyttämällä CI/CD-työkaluja. Tämä auttaa automatisoimaan testausprosessin ja havaitsemaan yhteensopivuusongelmat varhaisessa vaiheessa.
5. Valitse oikeat työkalut ja kehykset
Useat työkalut ja kehykset voivat auttaa virtaviivaistamaan kehitys- ja testausprosessia:
- Koontityökalut: Käytä koontityökaluja, kuten Webpack, Parcel tai Rollup, koodisi niputtamiseen, sen muuntamiseen eri selaimille ja sen optimointiin suorituskyvyn parantamiseksi.
- Lintterit ja koodianalyysi: Käytä linttereitä, kuten ESLint tai Prettier, koodityylin ohjeiden noudattamisen varmistamiseksi ja mahdollisten virheiden havaitsemiseksi.
- Virheenkorjaustyökalut: Hyödynnä selainten kehittäjätyökaluja laajennuksesi koodin virheenkorjaukseen ja ongelmien tunnistamiseen. Käytä tarkastajaa HTML-, CSS- ja JavaScript-koodin tutkimiseen ja käytä keskeytyskohtia ja lokituslauseita koodin kulun ymmärtämiseksi.
- Kehykset ja kirjastot: Harkitse kehysten tai kirjastojen, kuten React, Vue.js tai Svelte, käyttöä laajennuskehitysprosessin yksinkertaistamiseksi. Nämä kehykset tarjoavat valmiita komponentteja ja apuohjelmia, jotka voivat nopeuttaa kehitystä ja vähentää pohjakoodin määrää.
- Selainyhteensopivuuskirjastot: Kirjastot, jotka tarjoavat selainyhteensopivuusapuohjelmia. Esimerkiksi kirjasto voisi auttaa yksinkertaistamaan API-kutsujen tekemistä eri selainkohtaisiin API:hin.
6. Käytä deklaratiivisia API:eja aina kun mahdollista
Selainlaajennuskehysten tarjoamat deklaratiiviset API:t tarjoavat usein paremman yhteensopivuuden eri selainten välillä verrattuna imperatiivisiin lähestymistapoihin, kun ne ovat saatavilla. Käytä esimerkiksi deklaratiivisia sääntöjä sisältöskriptien lisäämiseen sen sijaan, että lisäisit skriptejä manuaalisesti imperatiivisin keinoin.
Erityiset selainyhteensopivuutta koskevat huomiot
Jokaisella selaimella on omat ainutlaatuiset yhteensopivuusvaatimuksensa. Näiden näkökohtien ymmärtäminen on ratkaisevan tärkeää vankkojen ja luotettavien laajennusten rakentamisessa.
Chrome ja Chromium-pohjaiset selaimet
Chrome on yleensä suoraviivaisin selain kehittää sen laajan käytön ja vankan API:n ansiosta. Kiinnitä kuitenkin huomiota näihin seikkoihin:
- Manifest-versio: Chrome tukee manifest-versioita 2 ja 3. Manifest-versio 3 tuo merkittäviä muutoksia, erityisesti taustaskriptien toteutukseen. Suunnittele laajennus sen mukaisesti.
- Service Workerit: Siirry service workereihin taustaskripteissä manifest-versiossa 3 ollaksesi linjassa Chromen uuden suunnittelun kanssa.
- Content Security Policy (CSP): Ole tietoinen CSP-asetuksista, jotka rajoittavat resursseja, joita verkkosivu voi ladata. Laajennuksesi on noudatettava CSP-rajoituksia.
- WebUI: Ole tietoinen siitä, että jos laajennus muuttaa minkä tahansa WebUI-sivun (kuten chrome://downloads) DOM-rakennetta, sinun on erikseen ilmoitettava lupa.
Firefox
Firefox, toiseksi suosituin selain, tarjoaa kehittäjäystävällisen ympäristön hyvällä tukijärjestelmällä, mutta vaatii myös erityisiä huomioita:
- WebExtension API: Firefox omaksuu voimakkaasti WebExtension API:n, joka on suunniteltu yhteensopivaksi Chromen kanssa.
- Selainkohtaiset API:t: Firefox saattaa tukea joitakin selainkohtaisia API:eja, joten ole varovainen niiden suoran käytön kanssa.
- Testaus: Perusteellinen testaus Firefoxilla on elintärkeää, ja käytä Firefoxin tarjoamia virheenkorjaustyökaluja ongelmien löytämiseen ja korjaamiseen.
Safari
Safarilla on oma laajennuskehys, mikä tekee siitä ainutlaatuisen. Harkitse seuraavia seikkoja:
- WebKit API: Safari-laajennukset toimivat WebKit API:lla.
- Natiivikomponentit: Safari käyttää natiivielementtejä, mikä mahdollistaa saumattoman integroinnin Applen ekosysteemiin.
- Yhteensopivuuskerros: Safari-selaimella on joskus yhteensopivuuskerroksia, jotka voivat tehdä siitä yhteensopivan Chrome-laajennusten kanssa.
- Testaus: Testaa se kaikilla Apple-laitteilla, mukaan lukien macOS ja iOS.
Microsoft Edge
Microsoft Edge, joka on rakennettu Chromiumille, tarjoaa yleensä hyvän yhteensopivuuden Chrome-laajennusten kanssa, mutta joitakin erityisiä yksityiskohtia on otettava huomioon:
- Chrome-laajennusten tuki: Microsoft Edgen tuki Chrome-laajennuksille yksinkertaistaa kehitysprosessia.
- Microsoft-ominaisuudet: Hyödynnä Microsoft-kohtaisia ominaisuuksia vielä paremman käyttäjäkokemuksen saavuttamiseksi.
- Testaus: Testaa perusteellisesti, koska Edge päivittyy usein.
Opera
Opera käyttää Chromium-moottoria, joten yhteensopivuus Chromen kanssa on erinomainen. Kuitenkin on vielä joitakin erityisiä seikkoja, jotka on otettava huomioon.
- Chrome-laajennusten tuki: Chrome-laajennukset toimivat tyypillisesti Operassa.
- Opera-kohtaiset ominaisuudet: Hyödynnä Operan ainutlaatuisia ominaisuuksia, kuten sisäänrakennettua VPN:ää tai mainostenestoa.
- Testaus: Testaa laajennuksesi varmistaaksesi, että sen toiminnallisuus toimii odotetusti.
Parhaat käytännöt selainyhteensopivuudelle
- Priorisoi WebExtension API: Kehitä laajennuksesi WebExtension API -standardien mukaisesti, mikä mahdollistaa paremman yhteensopivuuden.
- Yksinkertaista koodiasi: Pidä koodisi tiiviinä ja ymmärrettävänä. Tämä vähentää virheiden todennäköisyyttä ja yksinkertaistaa virheenkorjausta.
- Pysy ajan tasalla: Pidä laajennuksesi ajan tasalla uusimpien selain-API-muutosten ja tietoturvapäivitysten kanssa.
- Tarjoa selkeä dokumentaatio: Tarjoa täydellinen dokumentaatio auttaaksesi käyttäjiä ymmärtämään, kuinka laajennustasi käytetään.
- Hanki käyttäjäpalautetta: Kuuntele käyttäjäpalautetta ja käsittele kaikki ongelmat tai ehdotukset. Käyttäjäpalaute on arvokasta yhteensopivuusongelmien tai käytettävyysongelmien tunnistamisessa.
- Käytä versionhallintaa: Toteuta versionhallintajärjestelmä, kuten Git. Tämä auttaa sinua hallitsemaan koodiasi, seuraamaan muutoksia ja tekemään yhteistyötä muiden kehittäjien kanssa.
Selainlaajennusten ja yhteensopivuuden tulevaisuus
Selainlaajennusten kenttä kehittyy jatkuvasti. Kun selaimet tuovat uusia ominaisuuksia ja API:ita, kehittäjien on pysyttävä ajan tasalla näistä muutoksista ylläpitääkseen yhteensopivuutta ja parantaakseen käyttäjäkokemusta.
- WebAssembly (Wasm): WebAssembly kasvattaa suosiotaan tapana kirjoittaa korkean suorituskyvyn koodia verkkoon. Tutki WebAssemblyn käyttömahdollisuuksia laajennuksissasi.
- Selain-API:n kehitys: Selain-API:ita parannetaan jatkuvasti. Pidä silmällä uusia ominaisuuksia ja päivityksiä hyödyntääksesi niitä.
- Käyttäjien yksityisyys ja turvallisuus: Käyttäjien yksityisyys ja turvallisuus ovat yhä tärkeämpiä. Varmista, että laajennuksesi noudattaa parhaita käytäntöjä.
- WebAssembly (Wasm): Selainten teknologioiden kehittyessä harkitse WebAssemblyn sisällyttämisen etuja suorituskyvyn parantamiseksi.
- Nousevat selaimet: Pysy ajan tasalla uusien selainten noususta kohdemarkkinoillasi ja sisällytä testaus- ja yhteensopivuustuki.
Johtopäätös
Selainyhteensopivuus on olennainen osa selainlaajennusten kehitystä. Ymmärtämällä selainkentän vivahteet, noudattamalla verkkostandardeja, toteuttamalla tehokkaita strategioita ja hyödyntämällä asianmukaisia työkaluja voit rakentaa laajennuksia, jotka tavoittavat maailmanlaajuisen yleisön ja tarjoavat saumattoman käyttäjäkokemuksen. Jatkuva testaus, sopeutuminen ja ajan tasalla pysyminen uusimpien selainten teknologioiden kanssa on avain yhteensopivuuden ylläpitämiseen ja menestyvien selainlaajennusten rakentamiseen.