WebExtensions je technologie rozšíření prohlížeče podporovaná většinou oblíbených prohlížečů. Pomocí WebExtensions můžete vytvářet rozšíření, která mohou mírně změnit uživatelské rozhraní prohlížeče, upravit obsah webových stránek a změnit síťové požadavky prohlížeče. WebExtensions jsou vytvořena pomocí technologií jako HTML , CSS , JavaScript a JSON .
Rozšíření WebExtensions je zip archiv s téměř libovolnou vnitřní strukturou vnořených adresářů a souborů. Jedním z mála požadavků z hlediska struktury je přítomnost manifest.json – souboru JSON , který vytváří protokol pro interakci mezi prohlížečem, rozšířením prohlížeče a uživatelem. Co může manifest obsahovat:
Každá stránka na pozadí rozšíření, stránka nastavení nebo stránka rozbalovací nabídky běží v samostatném procesu s vlastním kontextem. Interakce mezi jednotlivými skripty stejného rozšíření, mezi různými rozšířeními a také mezi rozšířením a prohlížečem se provádí pomocí pojmenovaného systému zpráv. Většina požadavků z rozšíření do prohlížeče, které mohou způsobit zpoždění (například čtení a zápis různých dat), je implementována pomocí asynchronních rozhraní API .
Od listopadu 2017 jsou rozšíření vytvořená pomocí WebExtension podporována všemi hlavními prohlížeči:
Rozšíření WebExtensions může podporovat více jazyků pomocí vestavěné knihovny JavaScriptu i18n.js. Soubory odpovídající různým národním prostředím jsou ve formátu JSON . Pomocí speciální syntaxe lze některé části souboru manifest.json (jako je název a popis rozšíření) automaticky svázat s řetězci z jejich příslušných lokalit, ale je primárně odpovědností vývojáře rozšíření svázat různé prvky uživatelské rozhraní rozšíření na lokalizované řetězce.
Podobná technologie WebExtensions je XUL , která byla použita v Mozilla Firefox až do verze 57, a proprietární technologie společnosti Apple , která se používá k vytváření rozšíření v prohlížeči Safari .
Technologie WebExtensions byla vyvinuta jako cross-browser, ale v praxi se úroveň podpory různých API liší prohlížeč od prohlížeče. V závislosti na tom, jaké funkce rozšíření implementuje, se může ukázat, že pro publikování rozšíření v adresářích různých prohlížečů budete muset vytvořit různé archivy. Vývojáři prohlížečů se snaží vyřešit problém s nekompatibilitou pomocí průvodců migrací, což jen ztěžuje vývoj rozšíření.
Vývojáři prohlížečů navíc kritizují extrémně slabé možnosti WebExtensions ve srovnání s XUL - WebExtensions například neumožňují vytvářet panely nezávislé na navštívených zdrojích a nutí vývojáře zasahovat přímo do kódu stránek, které si prohlížejí, resp. se omezují na slabé možnosti ikony rozšíření. Pozoruhodným příkladem rozšíření, kterému bylo zabráněno v přechodu na WebExtensions, je widget, který zobrazuje nejnovější zprávy z kanálů RSS na tickeru.
Příklady rozšíření prohlížeče vytvořených pomocí technologie WebExtensions a fungujících ve třech nebo více prohlížečích: