MĂ©lyrehatĂł betekintĂ©s a böngĂ©szĆbĆvĂtmĂ©ny-fejlesztĂ©sbe Manifest V3 Ă©s JavaScript API-k hasznĂĄlatĂĄval. Tanuljon meg hatĂ©kony Ă©s biztonsĂĄgos bĆvĂtmĂ©nyeket kĂ©szĂteni.
BöngĂ©szĆbĆvĂtmĂ©ny-fejlesztĂ©s: Manifest V3 Ă©s JavaScript API-k
A böngĂ©szĆbĆvĂtmĂ©nyek olyan kis szoftverprogramok, amelyek testreszabjĂĄk a böngĂ©szĂ©si Ă©lmĂ©nyt. Ăj funkciĂłkat adhatnak hozzĂĄ, mĂłdosĂthatjĂĄk a weboldalak tartalmĂĄt, blokkolhatjĂĄk a hirdetĂ©seket Ă©s mĂ©g sok mĂĄst. A Manifest V3 megjelenĂ©sĂ©vel a bĆvĂtmĂ©nyek felĂ©pĂtĂ©se Ă©s mƱködĂ©se jelentĆs vĂĄltozĂĄsokon ment keresztĂŒl. Ez az ĂĄtfogĂł ĂștmutatĂł a böngĂ©szĆbĆvĂtmĂ©ny-fejlesztĂ©st tĂĄrgyalja a Manifest V3 Ă©s a JavaScript API-k hasznĂĄlatĂĄval, biztosĂtva a tudĂĄst ahhoz, hogy hatĂ©kony Ă©s biztonsĂĄgos bĆvĂtmĂ©nyeket hozzon lĂ©tre a modern böngĂ©szĆkhöz.
Mik azok a böngĂ©szĆbĆvĂtmĂ©nyek?
A böngĂ©szĆbĆvĂtmĂ©nyek lĂ©nyegĂ©ben mini-alkalmazĂĄsok, amelyek egy webböngĂ©szĆn belĂŒl futnak. Kiterjesztik a böngĂ©szĆ funkcionalitĂĄsĂĄt, Ă©s zökkenĆmentesen integrĂĄlĂłdnak a weboldalakkal. A bĆvĂtmĂ©nyeket szabvĂĄnyos webtechnolĂłgiĂĄkkal, pĂ©ldĂĄul HTML-lel, CSS-sel Ă©s JavaScript-tel ĂrjĂĄk, Ăgy viszonylag hozzĂĄfĂ©rhetĆvĂ© vĂĄlnak a webfejlesztĆk szĂĄmĂĄra.
NĂ©hĂĄny nĂ©pszerƱ böngĂ©szĆbĆvĂtmĂ©ny-pĂ©lda:
- ReklĂĄmblokkolĂłk: BlokkoljĂĄk a hirdetĂ©seket a weboldalakon, javĂtva a böngĂ©szĂ©si sebessĂ©get Ă©s csökkentve a zavarĂł tĂ©nyezĆket.
- JelszĂłkezelĆk: BiztonsĂĄgosan tĂĄroljĂĄk Ă©s kezelik a jelszavakat, automatikusan kitöltve azokat a weboldalakon.
- JegyzetelĆ bĆvĂtmĂ©nyek: LehetĆvĂ© teszik a felhasznĂĄlĂłk szĂĄmĂĄra, hogy jegyzeteket kĂ©szĂtsenek Ă©s közvetlenĂŒl a weboldalakrĂłl mentsĂ©k el azokat.
- HatĂ©konysĂĄgnövelĆ eszközök: Növelik a produktivitĂĄst olyan funkciĂłkkal, mint a feladatkezelĂ©s, idĆkövetĂ©s Ă©s fĂłkuszmĂłdok.
- NyelvfordĂtĂł eszközök: Egyetlen kattintĂĄssal fordĂtjĂĄk le a weboldalakat kĂŒlönbözĆ nyelvekre. PĂ©ldĂĄul: Google FordĂtĂł bĆvĂtmĂ©ny.
- VPN bĆvĂtmĂ©nyek: Proxyn keresztĂŒl irĂĄnyĂtjĂĄk az internetes forgalmat a földrajzi korlĂĄtozĂĄsok megkerĂŒlĂ©sĂ©re Ă©s a adatvĂ©delem növelĂ©sĂ©re.
A Manifest V3 jelentĆsĂ©ge
A Manifest V3 a manifest fĂĄjl legĂșjabb verziĂłja, amely egy JSON fĂĄjl, ami leĂrja a bĆvĂtmĂ©nyt a böngĂ©szĆ szĂĄmĂĄra. Körvonalazza a bĆvĂtmĂ©ny nevĂ©t, verziĂłjĂĄt, engedĂ©lyeit, hĂĄttĂ©r szkriptjeit Ă©s egyĂ©b alapvetĆ metaadatait. A Manifest V3 szĂĄmos kulcsfontossĂĄgĂș vĂĄltozĂĄst vezet be elĆdjĂ©hez, a Manifest V2-höz kĂ©pest, elsĆsorban a biztonsĂĄgra Ă©s a teljesĂtmĂ©nyre összpontosĂtva.
FĆbb vĂĄltozĂĄsok a Manifest V3-ban:
- SzolgĂĄltatĂĄs-munkĂĄsok (Service Workers): A Manifest V3 a hĂĄttĂ©roldalakat szolgĂĄltatĂĄs-munkĂĄsokkal (service worker) vĂĄltja fel. A szolgĂĄltatĂĄs-munkĂĄsok esemĂ©nyvezĂ©relt szkriptek, amelyek a hĂĄttĂ©rben futnak anĂ©lkĂŒl, hogy ĂĄllandĂł oldalra lenne szĂŒksĂ©gĂŒk. HatĂ©konyabbak Ă©s kevĂ©sbĂ© erĆforrĂĄs-igĂ©nyesek, mint a hĂĄttĂ©roldalak.
- DeklaratĂv HĂĄlĂłzati KĂ©rĂ©s API (Declarative Net Request API): Ez az API lehetĆvĂ© teszi a bĆvĂtmĂ©nyek szĂĄmĂĄra, hogy a hĂĄlĂłzati kĂ©rĂ©seket közvetlen lehallgatĂĄs nĂ©lkĂŒl mĂłdosĂtsĂĄk. Növeli a biztonsĂĄgot Ă©s a teljesĂtmĂ©nyt azĂĄltal, hogy a szƱrĂ©si logikĂĄt a böngĂ©szĆre hĂĄrĂtja.
- SzigorĂșbb TartalombiztonsĂĄgi IrĂĄnyelv (CSP): A Manifest V3 szigorĂșbb CSP-szabĂĄlyokat Ă©rvĂ©nyesĂt a tetszĆleges kĂłd vĂ©grehajtĂĄsĂĄnak megakadĂĄlyozĂĄsĂĄra, tovĂĄbb növelve a biztonsĂĄgot.
- Promise-alapĂș API-k: SzĂĄmos API mostantĂłl promise-alapĂș, ami megkönnyĂti az aszinkron mƱveletek kezelĂ©sĂ©t.
Miért a våltås a Manifest V3-ra?
- Fokozott biztonsĂĄg: A Manifest V3 cĂ©lja a böngĂ©szĆbĆvĂtmĂ©nyek biztonsĂĄgĂĄnak javĂtĂĄsa Ă©s a felhasznĂĄlĂłk vĂ©delme a rosszindulatĂș kĂłdoktĂłl.
- JavĂtott teljesĂtmĂ©ny: A szolgĂĄltatĂĄs-munkĂĄsok Ă©s a DeklaratĂv HĂĄlĂłzati KĂ©rĂ©s API hozzĂĄjĂĄrulnak a jobb teljesĂtmĂ©nyhez Ă©s a csökkentett erĆforrĂĄs-felhasznĂĄlĂĄshoz.
- Nagyobb adatvĂ©delem: A Manifest V3 cĂ©lja, hogy a felhasznĂĄlĂłk nagyobb ellenĆrzĂ©st kapjanak adataik Ă©s adatvĂ©delmĂŒk felett.
FejlesztĆi környezet beĂĄllĂtĂĄsa
MielĆtt elkezdenĂ© a böngĂ©szĆbĆvĂtmĂ©nyek fejlesztĂ©sĂ©t, be kell ĂĄllĂtania a fejlesztĆi környezetet. Ez magĂĄban foglalja egy kĂłdszerkesztĆ telepĂtĂ©sĂ©t, egy böngĂ©szĆ kivĂĄlasztĂĄsĂĄt a tesztelĂ©shez, Ă©s a bĆvĂtmĂ©ny alapvetĆ fĂĄjlstruktĂșrĂĄjĂĄnak megĂ©rtĂ©sĂ©t.
1. KĂłdszerkesztĆ
VĂĄlasszon egy kĂłdszerkesztĆt, amellyel kĂ©nyelmesen tud dolgozni. NĂ©pszerƱ lehetĆsĂ©gek:
- Visual Studio Code (VS Code): Ingyenes Ă©s hatĂ©kony kĂłdszerkesztĆ, kivĂĄlĂł tĂĄmogatĂĄssal a JavaScript Ă©s mĂĄs webtechnolĂłgiĂĄk szĂĄmĂĄra.
- Sublime Text: Gyors Ă©s testreszabhatĂł kĂłdszerkesztĆ szĂ©les plugin-vĂĄlasztĂ©kkal.
- Atom: Ingyenes Ă©s nyĂlt forrĂĄskĂłdĂș kĂłdszerkesztĆ, amelyet a GitHub fejlesztett.
2. BöngĂ©szĆ a tesztelĂ©shez
VĂĄlasszon egy böngĂ©szĆt a bĆvĂtmĂ©nyek tesztelĂ©sĂ©hez. A Chrome Ă©s a Firefox a legnĂ©pszerƱbb vĂĄlasztĂĄsok, mivel robusztus fejlesztĆi eszközöket Ă©s tĂĄmogatĂĄst nyĂșjtanak a bĆvĂtmĂ©nyfejlesztĂ©shez.
3. AlapvetĆ fĂĄjlstruktĂșra
Egy böngĂ©szĆbĆvĂtmĂ©ny jellemzĆen a következĆ fĂĄjlokbĂłl ĂĄll:
- manifest.json: Ez a fĂĄjl tartalmazza a bĆvĂtmĂ©ny metaadatait, pĂ©ldĂĄul a nevĂ©t, verziĂłjĂĄt, engedĂ©lyeit Ă©s hĂĄttĂ©r szkriptjeit.
- background.js (vagy service worker szkript): Ez a szkript a hĂĄttĂ©rben fut, Ă©s olyan esemĂ©nyeket kezel, mint a böngĂ©szĆmƱveletek Ă©s a helyi menĂŒ kattintĂĄsok.
- content.js: Ez a szkript weboldalak kontextusĂĄban fut, Ă©s mĂłdosĂthatja azok tartalmĂĄt.
- popup.html: Ez a fĂĄjl hatĂĄrozza meg a bĆvĂtmĂ©ny felugrĂł ablakĂĄnak felhasznĂĄlĂłi felĂŒletĂ©t.
- popup.js: Ez a szkript kezeli a bĆvĂtmĂ©ny felugrĂł ablakĂĄnak logikĂĄjĂĄt.
- options.html: Ez a fĂĄjl hatĂĄrozza meg a bĆvĂtmĂ©ny beĂĄllĂtĂĄsi oldalĂĄnak felhasznĂĄlĂłi felĂŒletĂ©t.
- options.js: Ez a szkript kezeli a bĆvĂtmĂ©ny beĂĄllĂtĂĄsi oldalĂĄnak logikĂĄjĂĄt.
- icons: Ezek azok az ikonok, amelyek a bĆvĂtmĂ©nyt kĂ©pviselik a böngĂ©szĆ eszköztĂĄrĂĄban Ă©s a bĆvĂtmĂ©nykezelĆ oldalon.
Az elsĆ bĆvĂtmĂ©ny elkĂ©szĂtĂ©se: "Hello, World!"
KĂ©szĂtsĂŒnk egy egyszerƱ "Hello, World!" bĆvĂtmĂ©nyt, hogy bemutassuk a böngĂ©szĆbĆvĂtmĂ©ny-fejlesztĂ©s alapelveit.
1. Manifest fåjl létrehozåsa (manifest.json)
Hozzon lĂ©tre egy `manifest.json` nevƱ fĂĄjlt egy Ășj könyvtĂĄrban, Ă©s adja hozzĂĄ a következĆ kĂłdot:
{
"manifest_version": 3,
"name": "Hello, World!",
"version": "1.0",
"description": "Egy egyszerƱ Hello, World! bĆvĂtmĂ©ny",
"permissions": [
"storage"
],
"action": {
"default_popup": "popup.html",
"default_icon": {
"16": "images/icon16.png",
"48": "images/icon48.png",
"128": "images/icon128.png"
}
},
"icons": {
"16": "images/icon16.png",
"48": "images/icon48.png",
"128": "images/icon128.png"
}
}
MagyarĂĄzat:
- `manifest_version`: MeghatĂĄrozza a manifest fĂĄjl verziĂłjĂĄt (3 a Manifest V3-hoz).
- `name`: A bĆvĂtmĂ©ny neve.
- `version`: A bĆvĂtmĂ©ny verziĂłszĂĄma.
- `description`: A bĆvĂtmĂ©ny rövid leĂrĂĄsa.
- `permissions`: Egy tömb, amely a bĆvĂtmĂ©ny ĂĄltal igĂ©nyelt engedĂ©lyeket tartalmazza (pl. "storage").
- `action`: MeghatĂĄrozza a bĆvĂtmĂ©ny felugrĂł ablakĂĄnak tulajdonsĂĄgait, beleĂ©rtve az alapĂ©rtelmezett felugrĂł fĂĄjlt Ă©s ikonokat.
- `icons`: MeghatĂĄrozza a bĆvĂtmĂ©ny ikonjainak elĂ©rĂ©si Ăștjait.
2. Felugró fåjl létrehozåsa (popup.html)
Hozzon lĂ©tre egy `popup.html` nevƱ fĂĄjlt ugyanabban a könyvtĂĄrban, Ă©s adja hozzĂĄ a következĆ kĂłdot:
Hello, World!
Hello, World!
Ez egy egyszerƱ böngĂ©szĆbĆvĂtmĂ©ny.
Ez a fĂĄjl hatĂĄrozza meg a bĆvĂtmĂ©ny felugrĂł ablakĂĄnak felhasznĂĄlĂłi felĂŒletĂ©t, amely megjelenĂti a "Hello, World!" ĂŒzenetet.
3. Ikonképek létrehozåsa
Hozzon lĂ©tre hĂĄrom ikonkĂ©pet a következĆ mĂ©retekkel: 16x16, 48x48 Ă©s 128x128 pixel. Mentse Ćket `icon16.png`, `icon48.png` Ă©s `icon128.png` nĂ©ven egy `images` könyvtĂĄrba a bĆvĂtmĂ©ny könyvtĂĄrĂĄn belĂŒl.
4. A bĆvĂtmĂ©ny betöltĂ©se a böngĂ©szĆbe
Chrome:
- Nyissa meg a Chrome-ot, Ă©s lĂ©pjen a `chrome://extensions` cĂmre.
- EngedĂ©lyezze a "FejlesztĆi mĂłd" funkciĂłt a jobb felsĆ sarokban.
- Kattintson a "Kicsomagolt betöltĂ©se" gombra, Ă©s vĂĄlassza ki a bĆvĂtmĂ©nyfĂĄjlokat tartalmazĂł könyvtĂĄrat.
Firefox:
- Nyissa meg a Firefoxot, Ă©s lĂ©pjen az `about:debugging#/runtime/this-firefox` cĂmre.
- Kattintson a "Ideiglenes kiegĂ©szĂtĆ betöltĂ©se..." gombra, Ă©s vĂĄlassza ki a `manifest.json` fĂĄjlt.
A "Hello, World!" bĆvĂtmĂ©nynek most mĂĄr telepĂtve kell lennie, Ă©s lĂĄthatĂłnak kell lennie a böngĂ©szĆ eszköztĂĄrĂĄban. Kattintson a bĆvĂtmĂ©ny ikonjĂĄra a felugrĂł ablak megnyitĂĄsĂĄhoz, Ă©s tekintse meg a "Hello, World!" ĂŒzenetet.
Munka JavaScript API-kkal
A böngĂ©szĆbĆvĂtmĂ©nyek a böngĂ©szĆvel Ă©s a weboldalakkal JavaScript API-k segĂtsĂ©gĂ©vel tudnak kommunikĂĄlni. Ezek az API-k hozzĂĄfĂ©rĂ©st biztosĂtanak kĂŒlönbözĆ funkciĂłkhoz, mint pĂ©ldĂĄul:
- Lapok API (Tabs API): LehetĆvĂ© teszi a böngĂ©szĆ lapjainak kezelĂ©sĂ©t, beleĂ©rtve a lapok lĂ©trehozĂĄsĂĄt, frissĂtĂ©sĂ©t Ă©s lekĂ©rdezĂ©sĂ©t.
- TĂĄrolĂĄs API (Storage API): MĂłdot biztosĂt az adatok tartĂłs tĂĄrolĂĄsĂĄra Ă©s lekĂ©rĂ©sĂ©re a bĆvĂtmĂ©nyen belĂŒl.
- RiasztĂĄsok API (Alarms API): LehetĆvĂ© teszi feladatok ĂŒtemezĂ©sĂ©t meghatĂĄrozott idĆpontokban törtĂ©nĆ vĂ©grehajtĂĄsra.
- ĂrtesĂtĂ©sek API (Notifications API): LehetĆvĂ© teszi Ă©rtesĂtĂ©sek megjelenĂtĂ©sĂ©t a felhasznĂĄlĂł szĂĄmĂĄra.
- Környezeti menĂŒk API (Context Menus API): LehetĆvĂ© teszi egyĂ©ni elemek hozzĂĄadĂĄsĂĄt a böngĂ©szĆ környezeti menĂŒjĂ©hez (jobb gombos menĂŒ).
- Web Request API (DeklaratĂv HĂĄlĂłzati KĂ©rĂ©s a Manifest V3-ban): LehetĆvĂ© teszi a hĂĄlĂłzati kĂ©rĂ©sek lehallgatĂĄsĂĄt Ă©s mĂłdosĂtĂĄsĂĄt.
- SzkriptelĂ©si API (Scripting API): LehetĆvĂ© teszi szkriptek injektĂĄlĂĄsĂĄt weboldalakba.
Példa: A Tårolås API hasznålata
KĂ©szĂtsĂŒnk egy bĆvĂtmĂ©nyt, amely a TĂĄrolĂĄs API (Storage API) segĂtsĂ©gĂ©vel tĂĄrolja Ă©s olvassa be a felhasznĂĄlĂł nevĂ©t.
1. A Manifest fĂĄjl frissĂtĂ©se (manifest.json)
GyĆzĆdjön meg rĂłla, hogy a `manifest.json` fĂĄjlban lĂ©vĆ `permissions` tömb tartalmazza a "storage" elemet:
{
"manifest_version": 3,
"name": "Storage Example",
"version": "1.0",
"description": "Egy bĆvĂtmĂ©ny, amely a Storage API-t hasznĂĄlja",
"permissions": [
"storage"
],
"action": {
"default_popup": "popup.html"
},
"icons": {
"16": "images/icon16.png",
"48": "images/icon48.png",
"128": "images/icon128.png"
}
}
2. Felugró fåjl létrehozåsa (popup.html)
Hozza lĂ©tre vagy frissĂtse `popup.html` fĂĄjljĂĄt a következĆ tartalommal:
Storage Példa
Storage Példa
3. Felugró szkript létrehozåsa (popup.js)
Hozzon lĂ©tre egy `popup.js` nevƱ fĂĄjlt, Ă©s adja hozzĂĄ a következĆ kĂłdot:
document.addEventListener('DOMContentLoaded', () => {
const nameInput = document.getElementById('name');
const saveButton = document.getElementById('save');
const greeting = document.getElementById('greeting');
// A mentett név betöltése a tårolóból
chrome.storage.sync.get('name', (data) => {
if (data.name) {
nameInput.value = data.name;
greeting.textContent = `Szia, ${data.name}!`;
}
});
// A név mentése a tårolóba a gomb kattintåsakor
saveButton.addEventListener('click', () => {
const name = nameInput.value;
chrome.storage.sync.set({ name: name }, () => {
greeting.textContent = `Szia, ${name}!`;
});
});
});
MagyarĂĄzat:
- A szkript figyeli a `DOMContentLoaded` esemĂ©nyt, hogy biztosĂtsa a DOM teljes betöltĂ©sĂ©t a kĂłd vĂ©grehajtĂĄsa elĆtt.
- LekĂ©ri a hivatkozĂĄsokat a beviteli mezĆre, a mentĂ©s gombra Ă©s az ĂŒdvözlĆ bekezdĂ©sre.
- A mentett nevet a `chrome.storage.sync.get()` segĂtsĂ©gĂ©vel tölti be a tĂĄrolĂłbĂłl.
- A mentĂ©s gombra kattintva a nevet a `chrome.storage.sync.set()` segĂtsĂ©gĂ©vel menti a tĂĄrolĂłba.
- FrissĂti az ĂŒdvözlĆ bekezdĂ©st a mentett vagy beĂrt nĂ©vvel.
Töltse Ășjra a bĆvĂtmĂ©nyt a böngĂ©szĆjĂ©ben. MostantĂłl, amikor megnyitja a felugrĂł ablakot, beĂrhatja nevĂ©t, mentheti, Ă©s lĂĄthatja az ĂŒdvözlĆ ĂŒzenetet. A nĂ©v a bĆvĂtmĂ©ny tĂĄrolĂłjĂĄba kerĂŒl, Ă©s a felugrĂł ablak következĆ megnyitĂĄsakor betöltĆdik.
Példa: A Lapok API (Tabs API) hasznålata
KĂ©szĂtsĂŒnk egy bĆvĂtmĂ©nyt, amely megjelenĂti az aktuĂĄlis lap URL-jĂ©t egy felugrĂł ablakban.
1. A Manifest fĂĄjl frissĂtĂ©se (manifest.json)
Adja hozzĂĄ a "tabs" engedĂ©lyt a `manifest.json` fĂĄjlban lĂ©vĆ `permissions` tömbhöz:
{
"manifest_version": 3,
"name": "Tabs Example",
"version": "1.0",
"description": "Egy bĆvĂtmĂ©ny, amely a Tabs API-t hasznĂĄlja",
"permissions": [
"tabs"
],
"action": {
"default_popup": "popup.html"
},
"icons": {
"16": "images/icon16.png",
"48": "images/icon48.png",
"128": "images/icon128.png"
}
}
2. Felugró fåjl létrehozåsa (popup.html)
Hozza lĂ©tre vagy frissĂtse `popup.html` fĂĄjljĂĄt a következĆ tartalommal:
Lapok Példa
Lapok Példa
AktuĂĄlis lap URL-je:
3. Felugró szkript létrehozåsa (popup.js)
Hozzon lĂ©tre egy `popup.js` nevƱ fĂĄjlt, Ă©s adja hozzĂĄ a következĆ kĂłdot:
document.addEventListener('DOMContentLoaded', () => {
const urlDisplay = document.getElementById('url');
// Az aktuålis lap URL-jének lekérése
chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
const tab = tabs[0];
urlDisplay.textContent = tab.url;
});
});
MagyarĂĄzat:
- A szkript figyeli a `DOMContentLoaded` eseményt.
- A `chrome.tabs.query()` segĂtsĂ©gĂ©vel lekĂ©ri az aktuĂĄlisan aktĂv lapot az aktuĂĄlis ablakban.
- LekĂ©ri a lap URL-jĂ©t, Ă©s megjelenĂti azt az `url` bekezdĂ©sben.
Töltse Ășjra a bĆvĂtmĂ©nyt a böngĂ©szĆjĂ©ben. MostantĂłl, amikor megnyitja a felugrĂł ablakot, az megjelenĂti az aktuĂĄlis lap URL-jĂ©t.
Håttér szkriptek és szolgåltatås-munkåsok (Service Workers)
A Manifest V3-ban a hĂĄttĂ©r szkripteket szolgĂĄltatĂĄs-munkĂĄsok (service worker) vĂĄltjĂĄk fel. A szolgĂĄltatĂĄs-munkĂĄsok esemĂ©nyvezĂ©relt szkriptek, amelyek a hĂĄttĂ©rben futnak anĂ©lkĂŒl, hogy ĂĄllandĂł oldalra lenne szĂŒksĂ©gĂŒk. HatĂ©konyabbak Ă©s kevĂ©sbĂ© erĆforrĂĄs-igĂ©nyesek, mint a hĂĄttĂ©roldalak.
A szolgĂĄltatĂĄs-munkĂĄsok (Service Workers) fĆbb jellemzĆi:
- EsemĂ©nyvezĂ©relt: A szolgĂĄltatĂĄs-munkĂĄsok olyan esemĂ©nyekre reagĂĄlnak, mint a böngĂ©szĆmƱveletek, riasztĂĄsok Ă©s ĂŒzenetek a tartalom szkriptektĆl.
- Aszinkron: A szolgĂĄltatĂĄs-munkĂĄsok aszinkron API-kat hasznĂĄlnak a fĆ szĂĄl blokkolĂĄsĂĄnak elkerĂŒlĂ©sĂ©re.
- InaktivitĂĄs esetĂ©n leĂĄll: A szolgĂĄltatĂĄs-munkĂĄsok leĂĄllnak, amikor nem kezelnek aktĂvan esemĂ©nyeket, ezzel erĆforrĂĄsokat takarĂtva meg.
Példa: Szolgåltatås-munkås (Service Worker) hasznålata
KĂ©szĂtsĂŒnk egy bĆvĂtmĂ©nyt, amely Ă©rtesĂtĂ©st jelenĂt meg, amikor a böngĂ©szĆ elindul.
1. A Manifest fĂĄjl frissĂtĂ©se (manifest.json)
FrissĂtse a `manifest.json` fĂĄjljĂĄt a következĆ tartalommal:
{
"manifest_version": 3,
"name": "Service Worker Example",
"version": "1.0",
"description": "Egy bĆvĂtmĂ©ny, amely szolgĂĄltatĂĄs-munkĂĄst hasznĂĄl",
"permissions": [
"notifications"
],
"background": {
"service_worker": "background.js"
},
"icons": {
"16": "images/icon16.png",
"48": "images/icon48.png",
"128": "images/icon128.png"
}
}
MagyarĂĄzat:
- A "background" tulajdonsĂĄg a szolgĂĄltatĂĄs-munkĂĄs szkript ( `background.js`) elĂ©rĂ©si ĂștjĂĄt hatĂĄrozza meg.
- A "permissions" tömb tartalmazza a "notifications" elemet, amely az Ă©rtesĂtĂ©sek megjelenĂtĂ©sĂ©hez szĂŒksĂ©ges.
2. Szolgåltatås-munkås szkript létrehozåsa (background.js)
Hozzon lĂ©tre egy `background.js` nevƱ fĂĄjlt, Ă©s adja hozzĂĄ a következĆ kĂłdot:
chrome.runtime.onStartup.addListener(() => {
// ĂrtesĂtĂ©s megjelenĂtĂ©se a böngĂ©szĆ indĂtĂĄsakor
chrome.notifications.create('startup-notification', {
type: 'basic',
iconUrl: 'images/icon48.png',
title: 'BöngĂ©szĆ elindult',
message: 'A böngĂ©szĆ elindult.',
});
});
MagyarĂĄzat:
- A szkript figyeli a `chrome.runtime.onStartup` esemĂ©nyt, amely a böngĂ©szĆ indĂtĂĄsakor vĂĄltĂłdik ki.
- A `chrome.notifications.create()` segĂtsĂ©gĂ©vel Ă©rtesĂtĂ©st jelenĂt meg a megadott tulajdonsĂĄgokkal.
Töltse Ășjra a bĆvĂtmĂ©nyt a böngĂ©szĆjĂ©ben. MostantĂłl, amikor ĂșjraindĂtja a böngĂ©szĆjĂ©t, Ă©rtesĂtĂ©st kell lĂĄtnia a bĆvĂtmĂ©nytĆl.
Tartalom szkriptek
A tartalom szkriptek olyan JavaScript fĂĄjlok, amelyek weboldalak kontextusĂĄban futnak. HozzĂĄfĂ©rhetnek Ă©s mĂłdosĂthatjĂĄk a weboldalak DOM-jĂĄt, lehetĆvĂ© tĂ©ve a webhelyek viselkedĂ©sĂ©nek Ă©s megjelenĂ©sĂ©nek testreszabĂĄsĂĄt.
A tartalom szkriptek fĆbb jellemzĆi:
- Hozzåférés a DOM-hoz: A tartalom szkriptek hozzåférhetnek és manipulålhatjåk a weboldalak DOM-jåt.
- ElkĂŒlönĂtĂ©s a weboldal szkriptektĆl: A tartalom szkriptek elkĂŒlönĂtett környezetben futnak, megakadĂĄlyozva az ĂŒtközĂ©seket a weboldal szkriptekkel.
- KommunikĂĄciĂł a hĂĄttĂ©r szkriptekkel: A tartalom szkriptek ĂŒzenetkĂŒldĂ©ssel kommunikĂĄlhatnak a hĂĄttĂ©r szkriptekkel.
Példa: Tartalom szkript hasznålata
KĂ©szĂtsĂŒnk egy bĆvĂtmĂ©nyt, amely vilĂĄgoskĂ©kre vĂĄltoztatja a weboldalak hĂĄttĂ©rszĂnĂ©t.
1. A Manifest fĂĄjl frissĂtĂ©se (manifest.json)
FrissĂtse a `manifest.json` fĂĄjljĂĄt a következĆ tartalommal:
{
"manifest_version": 3,
"name": "Content Script Example",
"version": "1.0",
"description": "Egy bĆvĂtmĂ©ny, amely tartalom szkriptet hasznĂĄl",
"permissions": [
"activeTab",
"scripting"
],
"background": {
"service_worker": "background.js"
},
"content_scripts": [
{
"matches": [""],
"js": ["content.js"]
}
],
"icons": {
"16": "images/icon16.png",
"48": "images/icon48.png",
"128": "images/icon128.png"
}
}
MagyarĂĄzat:
- A "content_scripts" tulajdonsĂĄg egy tömböt ad meg a weboldalakba injektĂĄlandĂł tartalom szkriptekbĆl.
- "matches" megadja azokat az URL-eket, amelyekbe a tartalom szkriptet injektĂĄlni kell (`
` minden URL-nek megfelel). - "js" megadja a tartalom szkript elĂ©rĂ©si ĂștjĂĄt (`content.js`).
- A "permissions" tömb tartalmazza az "activeTab" Ă©s "scripting" engedĂ©lyeket, amelyek a szkriptek injektĂĄlĂĄsĂĄhoz szĂŒksĂ©gesek.
2. Tartalom szkript létrehozåsa (content.js)
Hozzon lĂ©tre egy `content.js` nevƱ fĂĄjlt, Ă©s adja hozzĂĄ a következĆ kĂłdot:
document.body.style.backgroundColor = 'lightblue';
3. Szolgåltatås-munkås (Service Worker) létrehozåsa (background.js)
Hozzon lĂ©tre egy `background.js` nevƱ fĂĄjlt, Ă©s adja hozzĂĄ a következĆ kĂłdot:
chrome.action.onClicked.addListener((tab) => {
chrome.scripting.executeScript({
target: { tabId: tab.id },
function: () => {
document.body.style.backgroundColor = 'lightblue';
}
});
});
MagyarĂĄzat:
- A tartalom szkript egyszerƱen vilĂĄgoskĂ©kre ĂĄllĂtja a `body` elem hĂĄttĂ©rszĂnĂ©t.
- A szolgĂĄltatĂĄs-munkĂĄs figyeli a kattintĂĄsi esemĂ©nyt, Ă©s vĂ©grehajt egy funkciĂłt az aktuĂĄlis lapon, amely megvĂĄltoztatja a hĂĄttĂ©rszĂnt.
Töltse Ășjra a bĆvĂtmĂ©nyt a böngĂ©szĆjĂ©ben. MostantĂłl, amikor bĂĄrmely weboldalt megnyit, a hĂĄttĂ©rszĂn vilĂĄgoskĂ©k lesz.
BöngĂ©szĆbĆvĂtmĂ©nyek hibakeresĂ©se
A böngĂ©szĆbĆvĂtmĂ©nyek hibakeresĂ©se a fejlesztĂ©si folyamat elengedhetetlen rĂ©sze. A Chrome Ă©s a Firefox kivĂĄlĂł fejlesztĆi eszközöket biztosĂt a bĆvĂtmĂ©nyek hibakeresĂ©sĂ©hez.
Hibakeresés Chrome-ban:
- Nyissa meg a Chrome-ot, Ă©s lĂ©pjen a `chrome://extensions` cĂmre.
- EngedĂ©lyezze a "FejlesztĆi mĂłd" funkciĂłt a jobb felsĆ sarokban.
- Kattintson a "HĂĄttĂ©roldal ellenĆrzĂ©se" (Inspect views background page) linkre a bĆvĂtmĂ©nyĂ©hez. Ez megnyitja a Chrome FejlesztĆi Eszközöket a hĂĄttĂ©r szkripthez.
- A tartalom szkriptek hibakeresĂ©sĂ©hez nyissa meg azt a weboldalt, ahovĂĄ a tartalom szkriptet injektĂĄltĂĄk, majd nyissa meg a Chrome FejlesztĆi Eszközöket ehhez az oldalhoz. LĂĄtnia kell a tartalom szkriptjĂ©t a "ForrĂĄsok" (Sources) panelen.
Hibakeresés Firefoxban:
- Nyissa meg a Firefoxot, Ă©s lĂ©pjen az `about:debugging#/runtime/this-firefox` cĂmre.
- Keresse meg bĆvĂtmĂ©nyĂ©t a listĂĄban, Ă©s kattintson az "EllenĆrzĂ©s" (Inspect) gombra. Ez megnyitja a Firefox FejlesztĆi Eszközöket a bĆvĂtmĂ©nyhez.
- A tartalom szkriptek hibakeresĂ©sĂ©hez nyissa meg azt a weboldalt, ahovĂĄ a tartalom szkriptet injektĂĄltĂĄk, majd nyissa meg a Firefox FejlesztĆi Eszközöket ehhez az oldalhoz. LĂĄtnia kell a tartalom szkriptjĂ©t a "HibakeresĆ" (Debugger) panelen.
Gyakori hibakeresési technikåk:
- KonzolnaplĂłzĂĄs: HasznĂĄlja a `console.log()`-ot ĂŒzenetek kiĂrĂĄsĂĄra a konzolra.
- TörĂ©spontok: Helyezzen törĂ©spontokat a kĂłdjĂĄba a vĂ©grehajtĂĄs szĂŒneteltetĂ©sĂ©hez Ă©s a vĂĄltozĂłk vizsgĂĄlatĂĄhoz.
- ForrĂĄstĂ©rkĂ©pek (Source maps): HasznĂĄljon forrĂĄstĂ©rkĂ©peket a kĂłd eredeti formĂĄjĂĄban törtĂ©nĆ hibakeresĂ©shez, mĂ©g akkor is, ha az minifikĂĄlva vagy transzpilĂĄlva lett.
- HibakezelĂ©s: ValĂłsĂtson meg hibakezelĂ©st a hibĂĄk elkapĂĄsĂĄra Ă©s naplĂłzĂĄsĂĄra.
BĆvĂtmĂ©ny közzĂ©tĂ©tele
MiutĂĄn kifejlesztette Ă©s tesztelte bĆvĂtmĂ©nyĂ©t, közzĂ©teheti a Chrome Web Store-ban vagy a Firefox Add-ons piacterĂ©n.
Közzététel a Chrome Web Store-ban:
- Hozzon lĂ©tre egy fejlesztĆi fiĂłkot a Chrome Web Store-ban.
- Csomagolja be a bĆvĂtmĂ©nyt egy `.zip` fĂĄjlba.
- Töltse fel a `.zip` fåjlt a Chrome Web Store-ba.
- Adja meg a szĂŒksĂ©ges metaadatokat, pĂ©ldĂĄul a bĆvĂtmĂ©ny nevĂ©t, leĂrĂĄsĂĄt Ă©s kĂ©pernyĆkĂ©peit.
- KĂŒldje be bĆvĂtmĂ©nyĂ©t felĂŒlvizsgĂĄlatra.
KözzĂ©tĂ©tel a Firefox KiegĂ©szĂtĆk PiacterĂ©n:
- Hozzon lĂ©tre egy fejlesztĆi fiĂłkot a Firefox KiegĂ©szĂtĆk piacterĂ©n.
- Csomagolja be a bĆvĂtmĂ©nyt egy `.zip` fĂĄjlba.
- Töltse fel a `.zip` fĂĄjlt a Firefox KiegĂ©szĂtĆk piacterĂ©re.
- Adja meg a szĂŒksĂ©ges metaadatokat, pĂ©ldĂĄul a bĆvĂtmĂ©ny nevĂ©t, leĂrĂĄsĂĄt Ă©s kĂ©pernyĆkĂ©peit.
- KĂŒldje be bĆvĂtmĂ©nyĂ©t felĂŒlvizsgĂĄlatra.
Legjobb gyakorlatok a közzétételhez:
- Ărjon egy vilĂĄgos Ă©s tömör leĂrĂĄst a bĆvĂtmĂ©nyĂ©rĆl.
- KĂ©szĂtsen kivĂĄlĂł minĆsĂ©gƱ kĂ©pernyĆkĂ©peket Ă©s videĂłkat a bĆvĂtmĂ©ny funkciĂłinak bemutatĂĄsĂĄra.
- Alaposan tesztelje bĆvĂtmĂ©nyĂ©t a bekĂŒldĂ©s elĆtt.
- Gyorsan vålaszoljon a felhasznålói véleményekre és visszajelzésekre.
- Tartsa naprakĂ©szen bĆvĂtmĂ©nyĂ©t a legĂșjabb böngĂ©szĆverziĂłkkal Ă©s biztonsĂĄgi javĂtĂĄsokkal.
BiztonsĂĄgi megfontolĂĄsok
A biztonsĂĄg a böngĂ©szĆbĆvĂtmĂ©ny-fejlesztĂ©s kritikus aspektusa. A bĆvĂtmĂ©nyek potenciĂĄlisan hozzĂĄfĂ©rhetnek Ă©rzĂ©keny felhasznĂĄlĂłi adatokhoz Ă©s mĂłdosĂthatjĂĄk a weboldalak tartalmĂĄt, ezĂ©rt alapvetĆ fontossĂĄgĂș a biztonsĂĄgi legjobb gyakorlatok betartĂĄsa a felhasznĂĄlĂłk rosszindulatĂș kĂłdoktĂłl valĂł vĂ©delme Ă©rdekĂ©ben.
FĆbb biztonsĂĄgi megfontolĂĄsok:
- MinimalizĂĄlja az engedĂ©lyeket: Csak azokat az engedĂ©lyeket kĂ©rje, amelyekre bĆvĂtmĂ©nyĂ©nek valĂłban szĂŒksĂ©ge van.
- ĂrvĂ©nyesĂtse a felhasznĂĄlĂłi bevitelt: TisztĂtsa meg Ă©s Ă©rvĂ©nyesĂtse az összes felhasznĂĄlĂłi bevitelt a cross-site scripting (XSS) tĂĄmadĂĄsok megelĆzĂ©sĂ©re.
- HasznĂĄljon HTTPS-t: Mindig HTTPS-t hasznĂĄljon a tĂĄvoli szerverekkel valĂł kommunikĂĄciĂłhoz.
- TartalombiztonsĂĄgi IrĂĄnyelv (CSP): Tartson be egy szigorĂș CSP-t a tetszĆleges kĂłd vĂ©grehajtĂĄsĂĄnak megakadĂĄlyozĂĄsĂĄra.
- Rendszeresen frissĂtse bĆvĂtmĂ©nyĂ©t: Tartsa naprakĂ©szen bĆvĂtmĂ©nyĂ©t a legĂșjabb biztonsĂĄgi javĂtĂĄsokkal.
Ezen biztonsĂĄgi irĂĄnyelvek betartĂĄsĂĄval hozzĂĄjĂĄrulhat ahhoz, hogy böngĂ©szĆbĆvĂtmĂ©nye biztonsĂĄgos legyen a felhasznĂĄlĂłk szĂĄmĂĄra.
ĂsszegzĂ©s
A Manifest V3 Ă©s a JavaScript API-k hasznĂĄlatĂĄval törtĂ©nĆ böngĂ©szĆbĆvĂtmĂ©ny-fejlesztĂ©s hatĂ©kony mĂłdot kĂnĂĄl a böngĂ©szĂ©si Ă©lmĂ©ny testreszabĂĄsĂĄra Ă©s Ășj funkciĂłk hozzĂĄadĂĄsĂĄra a webböngĂ©szĆkhöz. Az ĂștmutatĂłban felvĂĄzolt kulcsfontossĂĄgĂș fogalmak, API-k Ă©s bevĂĄlt gyakorlatok megĂ©rtĂ©sĂ©vel erĆs Ă©s biztonsĂĄgos bĆvĂtmĂ©nyeket hozhat lĂ©tre, amelyek növelik a produktivitĂĄst, javĂtjĂĄk a biztonsĂĄgot, Ă©s jobb böngĂ©szĂ©si Ă©lmĂ©nyt nyĂșjtanak a felhasznĂĄlĂłk szĂĄmĂĄra vilĂĄgszerte. Ahogy a web folyamatosan fejlĆdik, a böngĂ©szĆbĆvĂtmĂ©nyek egyre fontosabb szerepet fognak jĂĄtszani az online interakciĂłk jövĆjĂ©nek alakĂtĂĄsĂĄban. HasznĂĄlja ki a Manifest V3 Ă©s a JavaScript API-k gazdag tĂĄrhĂĄzĂĄnak lehetĆsĂ©geit innovatĂv Ă©s Ă©rtĂ©kes bĆvĂtmĂ©nyek Ă©pĂtĂ©sĂ©re.