Dezvoltarea unei extensii pentru Firefox sau prima mea experiență, utilizând exemplul unei imagini de ecran

Dezvoltarea unei extensii pentru firefox sau prima mea experiență, utilizând exemplul unei imagini de ecran +18

  • 23.09.16 06:07 •
  • lnroma •
  • # 310844
  • Habrahabr •
  • 30 •
  • 6500

- la fel ca Forbes, doar mai bine.







După scrierea articolului Scripturi de sistem pe php pentru linux, vom scrie o captură de ecran. Am avut ideea, „De ce nu scrie o extensie care cravată în script-ul meu, cu descărcare automată de pe disc Yandex.“ ... citiți documentația cu privire la dezvoltarea de extensii, am decis totuși să înceapă scris.

Dezvoltarea unei extensii pentru Firefox sau prima mea experiență, utilizând exemplul unei imagini de ecran

Aici este un buton mic și o captură de ecran pe discul Yandex, rezultatul unei extensii prototip, scrise în câteva ore. Cu privire la procesul de creare a acestuia în cadrul ...

Atenție: aceasta este prima versiune a aplicației, în viitor scriptul din articolul precedent va acționa ca un screenshoter ...

Extensia pe care am dezvoltat-o ​​are următoarea structură a fișierelor:

-chrome.manifest
-install.rdf
--conținut
----browserOverlay.js
----browserOverlay.xul
----options.xul
--piele
----browserOverlay.css


Acum ne interesează fișierele: chrome.manifest și install.rdf. crom.manifest conține o descriere a structurii proiectului:


Primele două linii ale manifestului crom conțin: tipul de date, numele pachetului, calea către fișierele pachet.

A treia linie înregistrează, așa-numita, suprapunerea (adică Acest strat se află în jos ca și cum ar fi în partea de sus a unui deja existent, și adaugă controale la browser.

Fișierul install.rdf este un manifest de instalare care conține informații despre extensia adăugată:


După cum puteți vedea. Acesta conține identificatorul, numele aplicației, versiunea, creatorul, tipul aplicației, adresa URL a panoului de configurare și așa mai departe. informații.

Nu cred că merită să ne concentrăm asupra acestui dosar, pentru că totul este evident. Putem parse doar o opțiune optionsURL, aceasta este adresa URL care duce la setările de extensie, setările sunt, la rândul lor, descrise de fișierul options.xul:


În acest fișier, am descris doar 2 câmpuri de nume de utilizator și de parolă. Notă numele de «extensions.xulphpsrc.login» și «extensions.xulphpsrc.pass» care conțin ca ar fi fost o structură arborescentă, și ei vor fi mai ușor să iasă din masa totală a înregistrărilor, și au, o anumită garanție de unicitatea cheii ...

Apoi, ia în considerare fișierul browserOverlay.xul:


Ce face el? se conectează două fișiere browserOverlay.css, browserOverlay.js și creează o bară de instrumente și un singur buton pe ea "Screenshot":







Întreaga logică a aplicației este stocată în browserOverlay.js


Vom examina mai îndeaproape acest fișier, deși este trivial și efectuează doar 2 pași: este nevoie de o captură de ecran și o încarcă pe discul yandex. Imaginea de ecran pe care o face cu apelul utilitarului de sistem crot și încarcă rezultatul folosind curl. Funcționatorul "clic" pentru butonul "screenshot", setăm metoda makeScreen:


Acesta este punctul de intrare la aplicație, aici se formează numele screenshot-ului viitoare și apare un apel, programul linux, scrot. Selectăm zona cu ajutorul mouse-ului și facem un instantaneu, după care programul trece la următoarea metodă uploadToYandex și transmite numele fișierului la descărcare.


În această metodă, după cum puteți vedea, nu este nimic extraordinar, face 2 cereri folosind curl în yandex.disk, unul încarcă fișierul creat, celălalt îl publică. Mulțumesc lexore pentru comentarea. În final, primim o notificare că imaginea de ecran este salvată.

Ei bine, acum avem o extensie a modului de instalare? Pentru dezvoltare, putem crea, pur și simplu, un fișier sub numele aplicației în dosar:


În cazul în care ID-ul este identificatorul, [utilizator] - utilizator firefox, de exemplu, am primit acest lucru:


Și conținând calea spre directorul cu fișierele de extensie:

/ extensions / phpsrc / (de exemplu, am acest lucru).

Dezvoltarea unei extensii pentru Firefox sau prima mea experiență, utilizând exemplul unei imagini de ecran

Reporniți firefox și ați terminat ... Configurare extensie, vom merge să completeze și să caute extensia sa, apăsați butonul pentru a regla, introduceți numele de utilizator și parola de la yandex'a și gata, puteți apăsa acum un buton și o captură de ecran ...

Concluzie: Am scris extensia pentru Firefox pentru prima dată și am mai avut timp să scriu articolul. Aceasta este prima versiune a aplicației în viitor există planuri de dezvoltare în direcția, utilizarea php în acest domeniu. Toate capturile de ecran sunt făcute de extensia dezvoltată. Mulțumesc tuturor pentru atenție, toate cele bune ...

Da, este, dar API-ul acestor WebExtensions este foarte slab. Lucrurile triviale nu se pot face cu ea. De exemplu, nu va fi capabil să repete fb2reader de expansiune (desigur, să se repete nu este necesar, dar dacă vrei să faci ceva similar, cum ar fi transformarea fișierul XML cu tabelul de logare, trebuie să faci pe tehnologia veche). Deci, dacă doar lăsați-l în această formă, așa cum este acum, o mulțime de lucruri Poher.

WebExtensions este actualizat în fiecare versiune. De exemplu, în cea de-a 49-a versiune, a fost adăugată posibilitatea manipulării istoriei. Și se va modifica în continuare la paritatea cu cromul.

Deci, va fi posibil să deschideți un fișier XML în browser, cum ar fi HTML (cu jQuery și alte cipuri favorite ale webmasterilor) sau nu? Și din sistemul de fișiere și de pe Internet?

Lucrul este că XUL este mult mai puternic decât WebExtensions. Paritatea nu ne ajută aici.

În Firefox, totul este foarte strâns legat unul de altul.

Trecerea la un nou motor (Servo), optimizat pentru multi-threading și multi-core (rădăcini de curent ale motorului Gecko în zilele Netscape, atunci când marea majoritate a PC-uri au fost nici o bază mai mult de un procesor), „moarte“ necesită XUL (care, după cum am înțeles, mult bătut în cuie la vechiul motor cu cuie). Aceasta, la rândul său, necesită rescrierea și adăugiri la noul API. În același timp, iar noua interfață se va baza pe HTML5.

Atunci când se dopiljat extensia web - extensii sub crom va fi posibil să se folosească în ff (este posibil cu reambalarea) - de asemenea, va fi destul de bun.
Problema este că posibilitățile de extindere a aplicațiilor web sunt limitate și este puțin probabil să fie capabile să implementeze programe de completare, cum ar fi Tree Style Tab sau Advanced Locationbar.

Stilul Tree Tree poate fi implementat, nu văd probleme. Poziția avansată de bara - da, direct în această formă nu este implementată pe crom. Dar am mai multe emoții despre accesul la nivel scăzut al rețelei și al sistemului de fișiere. Cipurile utile au fost, le voi pierde.

Stilul Tree Tree poate fi implementat, nu văd probleme.
De ce atunci nu este prezent în crom în cazul în care api extensia web este dezvoltat mult mai bine, decât acum în FF?







Trimiteți-le prietenilor: