Introduzione alle
Web Extension
Pino Ceniccola
Bologna Front-End, 23 Ottobre 2018
Preistoria 1/2
- 1995: Netscape Navigator 2.0 introduce NPAPI
- 1999: Internet Explorer 5 supporta le estensioni tramite ActiveX
- A cavallo degli anni 2000: Le Browser Toolbar
Preistoria 2/2
- 2003: Chris Pederick pubblica Web Developer Toolbar per Firebird
- 2004: Nasce FireFox, supporta gli Add-on tramite XUL
- 2006: Joe Hewitt pubblica FireBug 0.2
- 2008: Più di 600 milioni di estensioni scaricate per FireFox
Storia Recente
- 2010: Chrome 4 introduce le Chrome Extension (HTML, CSS, JS)
- 2015: W3C Browser Extension Community Group: Web Extension
- 2015: Firefox inizia la transizione da XUL alle Web Extension
- 2016: Microsoft annuncia che Edge supporterà le Web Extension
- 2017: Da FireFox 57 (Quantum) in poi sono supportate solo le Web Extension
2018: Who is late to the party?
Dove funzionano le Web Extension?
Quali sono i vantaggi delle Web Extension?
Sono facili da sviluppare (con HTML/CSS/JS)
Sviluppi una volta, funziona (più o meno) con tutti
Visibilità tramite Stores
Non ti devi preoccupare di essere retrocompatibile
"Pino, onestamente, ma tu che ne sai di Web Extension?!"
Anatomia di una Web Extension
manifest.json
Metadati
Assets
Permessi
Contesti di esecuzione
manifest.json
Anatomia di una Web Extension
Browser
API
Namespace disponibile in JavaScript
(come window
o document
)
Permette di accedere a funzionalità del browser di basso livello
Browser
API
bookmarks
browserSettings
cookies
downloads
history
menus
notifications
tabs
topSites
windows
Tips & Tricks
browser
VS chrome
- Chrome supporta solo
chrome
con callback
- FireFox supporta sia
browser
(promises) che chrome
(callback)
- Edge supporta
browser
ma solo con callback (!)
Tips & Tricks
browser
VS chrome
Per il momento, usa chrome
(con callback)
Per Edge:
if (typeof chrome === "undefined") window.chrome = browser;
Tips & Tricks
innerHTML
- Cerca di non usare
innerHTML
- Usa invece
document.createRange()
.createContextualFragment(string);
Tips & Tricks
Icone e assets
- Icone UI: 16×16, 19×19, 38×38, 48×48, 96×96, 128×128
- Icone Store: 32×32 e 64×64 (Firefox), 128×128 (Chrome), 64×64 (Opera)
- Screenshots: 1280×800 (Firefox+Chrome), 612×408 (Opera)
- Banners: 420×280 (Chrome), 300×188 (Opera)
Tips & Tricks
Pubblicazione
- "Single Purpose" Policy
- Non caricare contenuto esterno
- Fornisci codice sorgente ed eventuali istruzioni di build (in caso di tooling)
Opportunità
- C'è spazio per le estensioni di contenuto?
- Ha senso trasformare la tua PWA in una Web Extension?
- Il tuo ecommerce ha una Web Extension?
Grazie!
PS: Aprico lo trovi su aprico.org
PPS: Ricordati poi di lasciare la tua imparziale recensione (⭐️⭐️⭐️⭐️⭐️)