Polifil (енгл. Polyfill) je termin u razvoju internet softvera za kod koji pruža funkcionalnosti koje nedostaju nekom internet pregledaču. Obično se takav kod koristi da nadomesti funkcionalnosti koje većina pregledača implementira, a koje mogu nedostajati nekim starijim verzijama. Ovim se osigurava ujednačeno ponašanje veb stranice na širem spektru pregledača. Na primer, starija izdanja Internet eksplorer-a nisu podržavala mnoge mogućnosti HTML5 standarda, ali su ih stranice mogle koristiti ukoliko bi instalisale odgovarajući polifil. Sličan je pojam podloške (енгл. shim), čije značenje može obuhvatati polifil u zavisnosti od definicije. [1]

Poreklo termina уреди

Termin je osmislio Remi Šarp (енгл. Remy Sharp) 2009. godine radeći na knjizi 'Introducing HTML5' da opiše sredstvo koje će "Džavaskriptom (ili Flash-om ili kakogod) simulirati neki API ukoliko ovaj nije sadržan u pregledaču" [2].

Šarp je skovao ovaj termin po analogiji sa gipsom za ravnanje zidova (Polyfilla je brend gipsa u Ujedinjenom Kraljevstvu), jer polifil diskretno nadomešćuje nedostatke u funkcionalnosti pretraživača kao što gips popunjava rupe u zidu. Prefiks 'poly-' se takođe može odnositi na raznolikost tehnika koje se mogu koristiti da se ovo postigne (poly- je čest prefiks u engleskim neologizmima grčkog porekla koji znači mnogostrukost). Termin se raširio našavši su u dokumentacionim stranama Modernizr API-ja i pošto ga je upotrebio programer Pol Ajriš (енгл. Paul Irish) u svojoj prezentaciji.

Svrha уреди

Polifili omogućavaju ispravku grešaka u datom API-ju pretraživača ili dodavanje interfejsa koji u potpunosti nedostaju. Obično se polifil učitava ukoliko je primećeno da pretraživač ne podržava potreban API, ovime se postiže da ostatak koda može biti pisan kao da je taj API normalno podržan. Za razliku od podloške, polifil treba biti neprimetan te ne stvarati dodatne zavisnosti, odnosno može se lako odstraniti jednom kada više ne bude potreban.

Primeri уреди

html5shiv
U verzijama IE-a pre devete, nepoznati elementi poput <section> i <nav> bivali su pročitani kao prazni elementi i nisu se dali doterati pomoću CSS-a jer su razbijali ugnježđenost dokumenta. Jedan od najkorišćenijih polifila, html5shiv je koristio specifičnost IE-a da zaobiđe ovaj bag: pozivao je document.createElement("tagname") za svaki nepodržani HTML5 element, što je omogućavalo njihovo normalno parsiranje i stilizovanje.
-prefix-free
Ovaj polifil ne dograđuje mogućnosti zastarelih kao većina, već unapređuje savremene pretraživače. Omogućava prepoznavanje CSS3 svojstava naznačenih bez prefiksa koji se odnosi na specifičan pretraživač i dodaje isti u zavisnosti od prepoznatog trenutnog pretraživača.
Selectivizr
Selectivizr je popularan polifil koji omogućava funkcionisanje mnogih CSS3 selektora u IE-u 8 i ispod, radi tako što nalazi poznate nepodržane selektore i zatim ubacuje tražene stilske izmene u svaki pojedinačni element koji je zahvaćen selektorom. Podržava i neke dodatne Džavaskript selektorske bibliioteke kao što je JQuery.
CSS3 PIE
PIE ("Progressive Internet Explorer") implementira popularne CSS3 ukrase kvadrata koji nedostaju u starim verzijama IE-a, kao što su border-radius, box-shadow kao i linear-gradient. Implementiran je preko HTC ponašanja i koristi VML za IE 6-8 i SVG za IE 9.
es5-shim
Peto izdanje ECMAScript-a je donelo nove metode u standard koji su sintaktički kompatibilni sa starijim Džavaskript implementacijama te se većma mogu dodati polifilovima. Za ovo postoje dve biblioteke: e5-shim.js za metode koji se mogu u potpunosti realizovati ovako, i es5-sham.js koja sadrži delimične implementacije za metode koji isuviše zavise od nižih slojeva.
FlashCanvas
FlashCanvas je implementacija HTML5 Canval API-ja pomoću Flash-a. Ovaj polifil je komercijalan za razliku od većine i ima besplatnu i plaćenu varijantu.
MediaElement.js
Omogućava podršku za <video> i <audio> elemente, uključujući HTML5 MediaElement API, pomoću Flash ili Silverlight plaginova. Omogućava i opcioni media plejer UI za te elemente, koji je isti u svim pretraživačima.
Webshims Lib
Skup mnogih zasebnih polifila koji učitava samo one koji su potrebni za dati pretraživač.

Izvori уреди

  1. ^ „Modernizr Documentation”. Приступљено 31. Maj 2015.  Проверите вредност парамет(а)ра за датум: |access-date= (помоћ)(језик: енглески)
  2. ^ Šarp, Remi. „What is a polyfill?”. Приступљено 31. Maj 2015.  Проверите вредност парамет(а)ра за датум: |access-date= (помоћ)(језик: енглески)

Spoljašnje veze уреди