Hlavní navigace

Vzpomínka na Firefox

27. 5. 2014 19:35 | Petr Blahoš

S novým Firefoxem mi začaly chodit požadavky, zda bych přece jen ještě ten SEO Profesional Toolbar (dál mu budu říkat SEOP) nezaktualizovat. Přemluvili mě docela snadno. Přes 2 roky jsem na to ani nešáhl, a taky jsem skoro všechno zapomněl. Sem napíšu pár poznámek o tom, jak to vlastně šlo.

addon-bar ne, nav-bar ano

SEOP je klasické XUL rozšíření, nepoužívá SDK, instaluje se pomocí overlaye. Původně byl na status baru, když status bar zrušili, dal jsem ho na add-on bar, teď zrušili i ten. To samo o sobě se řeší jednoduše. Místo na add-on bar ho dám do <toolbarpalette id=„BrowserToolbarPalette“>. To ale funguje bez problémů pro tupá tlačítka. Já jsem narazil na to, že v předchozí verzi jsem se mohl spolehnout, že ty moje prvky existují, a mohu se k nim odkazovat, takže jsem si je na začátku v onload nahrál do proměnných:

this.main_button = document.getElementById("seop-main-button");
this.rec_button = document.getElementById("seop-rec-button");
a pak jsem se na ně takto odkazoval. To už nejde, protože když tam ten prvek není, tak ho prostě getElementById nevrátí. Já to řeším tak, že se na něj zeptám až na místě, kde ho potřebuju.

S tím přidáváním na nav-bar taky souvisí Toolbar customization events. Čistě v tom, že po přidání na nav-bar musím zaktualizovat stav.

Co jsem to nainstaloval?

Dovedu si představit, že celkem běžný problém může být to, že uživatel nainstaluje rozšíření, a nic. Nikde se nic neobjeví, nikde nic není vidět, takže na to do zítřka zapomene. Myslet si, že snad sám od sebe začne „customizovat“ by asi bylo naivní. Mozilla radí narvat to na nav-bar po prvním spuštění po instalaci, já to udělám po prvním spuštění nové verze. Vpodstatě podle tohoto návodu.

Drobnosti

  • Sice se zjednodušilo detekování private browsing módu, ale ten jsem ještě úplně nedoladil.
  • Ve firefoxu konečně funguje console.log. No dobře, funguje už asi od verze 4, ale SEOP kdysi běžel i ve verzi 3.0, takže se v něm logovalo jinak.
  • Nejsem si jist, jakou nejnižší verzi vlastně potřebuju k běhu. Nějakou jsem tam napsal, podle některé z komponent, které používám. Zajímalo by mě, jestli by mě upozornil ten add-on checker.
  • Pro získání čísla verze rozšíření lze použít modul AddonManager.jsm, ale proč? Lepší je napsat ho do kódu, nebo přesněji, napatchovat ho do kódu z install.rdf při sestavování balíčku.

Zajímavý je rozdíl mezi tou platformou pro psaní rozšíření v Mozille/Firefoxu, a Chrome. Na Chrome oceňuju to, že všechno to API je popsané na jednom místě. U Firefoxu jsem vždycky dlouho hledal, a pak si nebyl jist, jestli je to tak, jak to autoři mysleli. Je sice pravda, že se v tom dá udělat téměř vše. Ale proč?