Polyfill

Nella programmazione web, un polyfill (o polyfiller) è del codice scaricabile che fornisce dei servizi che non fanno parte di un browser. Esso implementa tecnologie che uno sviluppatore si aspetta che il browser metta a disposizione nativamente, fornendo un ventaglio più uniforme di API. Ad esempio, molte caratteristiche di HTML5 non sono supportate da versioni di Internet Explorer precedenti la 8 o la 9, ma possono essere utilizzate dalle pagine web se queste installano un polyfill.[1] Webshim[2] e HTML5 Shivs sono concetti correlati.

Origini

Il termine ha origine con Remy Sharp il quale aveva bisogno di una parola che significasse "replicare una API utilizzando JavaScript (o Flash o altro) se il browser non ne disponesse nativamente" mentre collaborava alla stesura del libro Introducing HTML5 nel 2009. Shim, per lui, significava un pezzo di codice che poteva essere aggiunto e che fosse in grado sistemare alcune funzionalità, ma che il più delle volte aveva le proprie API e quindi non soddisfaceva i requisiti terminologici di Sharp. Allo stesso modo, i termini progressive enhancement e graceful degradation non soddisfacevano le sue esigenze in quanto non richiedevano esplicitamente o erano specifici per JavaScript.

Sharp scelse il termine polyfill in modo da indicare il riempimento delle lacune nelle funzionalità dei browser ed utilizzare un numero qualsiasi di tecniche (poly può significare "molti" in greco). Anche Polyfilla, una pasta usata per coprire le crepe e i buchi nei muri, fu un'immagine che Sharp trovò adatta per il termine. Egli ricevette feedback che dichiaravano che "la parola dovrebbe essere cambiata", ma il termine è attualmente divenuto molto popolare tra gli sviluppatori web. Sharp non promosse ampiamente il termine volutamente, utilizzandolo solo in casi specifici e ritiene che esso abbia ottenuto un'ampia visibilità dopo che Paul Irish fece esplicitamente riferimento al termine durante una presentazione mesi dopo la sua nascita ed è stato aiutato a diventare popolare grazie alla pagina di Modernizr "HTML5 shims & polyfill".

Descrizione

I polyfill permettono di risolvere i problemi con le API di un browser o di aggiungere interfacce che non sono state affatto implementate. Un polyfill è uno shim per le API di un browser. In genere, uno sviluppatore verifica a livello di codice se un browser supporta un'API e carica un polyfill se l'API non è presente. Questo permette allo sviluppo di procedere come se l'API fosse nativa all'interno del browser. Uno di questi esempi è BrowserID, il quale si basa su un'API JavaScript che (a partire da metà 2012) non è presente su nessun browser e deve essere fornita tramite un polyfill.[3]

Un polyfill è diverso da uno shim, in quanto può essere rimosso senza alcuna modifica al resto del codice nel momento in cui l'API non implementata che sostituisce viene correttamente inclusa nel browser.

Lista dei polyfill conosciuti

html5shiv

Nelle versioni precedenti la 9 di Internet Explorer, gli elementi HTML sconosciuti come <section> e <nav> venivano considerati elementi vuoti, spezzando la struttura nidificata della pagina e rendendo impossibile il modellamento di tali elementi utilizzando il CSS. Uno dei polyfill più utilizzati, html5shiv, sfrutta un'altra stranezza di Internet Explorer per ovviare a questo bug: chiama document.createElement("tagname") per ciascuno dei nuovi elementi HTML5, il che fa in modo che Internet Explorer li analizzi nel modo corretto. Esso include anche uno stile predefinito di base per questi elementi HTML5.

<!--[if lt IE 9]>
<script src="path/to/html5shiv.js"></script>
<![endif]-->

-prefix-free

Sebbene la maggior parte dei polyfill abbiano come target i browser più datati, ve ne sono alcuni che spingono semplicemente un po' più avanti i browser moderni. Il polyfill -prefix-free di Lea Verou è di questo tipo, consentendo ai browser attuali di riconoscere le versioni senza prefisso di molte proprietà di CSS3 invece di richiedere che lo sviluppatore scriva tutti i prefissi dei vendor. Esso legge gli stylesheet della pagina e sostituisce tutte le proprietà senza prefisso con la relativa controparte con prefisso riconosciuta dal browser attuale.

<link rel="stylesheet" href="/css/styles.css">
<script src="/path/to/prefixfree.min.js"></script>

Selectivizr

Selectivizr di Keith Clark è un famoso polyfill che rende funzionanti molti selettori CSS3 in Internet Explorer 8 e precedenti. Esso legge gli stylesheet della pagina alla ricerca di una serie di selettori CSS3 noti, quindi utilizza una libreria di selettori JavaScript per cercare nel documento gli elementi corrispondenti a tali selettori, applicando gli stili direttamente a questi elementi. Supporta molte librerie di selettori JavaScript come ad esempio jQuery.

<script type="text/javascript" src="/path/to/jquery.min.js"></script>
<!--[if (gte IE 6)&(lte IE 8)]>
  <script type="text/javascript" src="/path/to/selectivizr-min.js"></script>
  <noscript><link rel="stylesheet" href="/path/to/fallback-styles.css" /></noscript>
<![endif]-->

Flexie

Forse una delle caratteristiche più attese di CSS3, Flexible Box Layout (conosciuto anche come Flexbox) promette di essere uno strumento estremamente potente per realizzare elementi di interfaccia. I motori WebKit e Mozilla hanno sostenuto un progetto preliminare di sintassi per anni. Flexie implementa il supporto per questa stessa sintassi in Internet Explorer e Opera.

Tuttavia, le specifiche di progetto hanno subito una drastica revisione a favore di una nuova (e molto più potente) sintassi, la quale non è ancora supportata da Flexie. Flexie può ancora essere utilizzato assieme alla vecchia sintassi, ma gli sviluppatori devono assicurarsi di includere anche la nuova sintassi per i browser futuri.

<script src="/path/to/jquery.min.js"></script>
<script src="/path/to/flexie.min.js"></script>

CSS3 PIE

PIE (Progressive Internet Explorer) implementa alcune delle più popolari proprietà CSS3 di decorazione delle box che mancano in Internet Explorer, compresi border-radius e box-shadow per Internet Explorer 8 e precedenti, e linear-gradient background per Internet Explorer 9 e precedenti. Invocato come un comportamento HTC (una caratteristica proprietaria di Internet Explorer), esso cerca le proprietà non supportate di CSS3 su specifici elementi e rappresenta queste proprietà utilizzando VML per Internet Explorer 6-8 e SVG per Internet Explorer 9. La sua rappresentazione è perlopiù indistinguibile dalle implementazioni native del browser e gestisce bene la modifica dinamica del DOM.

.box {
    border-radius: 8px 8px 0 0;
    box-shadow: #666 0px 2px 3px;
    behavior: url(/path/to/PIE.htc);
}

JSON 2

Douglas Crockford scrisse originariamente json2.js come un'API per leggere e scrivere il suo (allora promettente) formato dati JSON. Esso è divenuto così largamente utilizzato che i produttori di browser hanno deciso di implementare la sua API in modo nativo e trasformarla in uno standard de facto; json2.js venne quindi trasformata da libreria in polyfill.

<script>
if (!window.JSON) {
  document.write('<script src="path/to/json2.js"><\/script>');
}
</script>

es5-shim

ECMAScript 5th Edition (ES5) introduce alcune nuove funzionalità di scripting utili e, poiché sono sintatticamente compatibili con i motori JavaScript più vecchi, possono in gran parte essere trasformate in polyfill patchando i metodi degli oggetti JavaScript nativi. Questo polyfill es5-shim lo fa in due parti: es5-shim.js contiene quei metodi che possono essere completamente trasformati in polyfill, mentre es5-sham.js contiene implementazioni parziali degli altri metodi che dipendono troppo dal motore sottostante affinché possano funzionare nel modo adeguato.

<script src="/path/to/es5-shim.min.js"></script>

FlashCanvas

FlashCanvas è un'implementazione delle API Canvas di HTML5 che utilizzano un plugin Flash. È un raro polyfill commerciale, disponibile in una versione a pagamento e in una versione gratuita, la quale manca di alcune funzionalità avanzate come le ombre.

<!--[if lt IE 9]>
<script src="/path/to/flashcanvas.js"></script>
<![endif]-->

MediaElement.js

Il polyfill MediaElement.js di John Dyer fornisce il supporto per gli elementi <video> e <audio>, compresa l'API MediaElement di HTML5, in vecchi browser che utilizzano i plugin Flash o Silverlight. Esso fornisce inoltre un'interfaccia utente opzionale al lettore multimediale, la quale è compatibile con tutti i browser.

<link rel="stylesheet" href="/path/to/mediaelementplayer.min.css">
<script src="/path/to/jquery.js"></script>
<script src="/path/to/mediaelement-and-player.min.js"></script>

Webshims Lib

Webshims Lib di Alexander Farkas raggruppa molti altri polyfill in un unico pacchetto e carica esclusivamente quelli richiesti dal browser visitante.

<script src="/path/to/jquery.min.js"></script>
<script src="/path/to/js-webshim/minified/extras/modernizr-custom.js"></script>
<script src="/path/to/js-webshim/minified/polyfiller.js"></script>

<script>
    // Load all supported polyfills, if the browser needs them:
    $.webshims.polyfill();
</script>

Note

  1. ^ Remy Sharp, What is a polyfill?, su remysharp.com. URL consultato il 13 gennaio 2012.
  2. ^ Webshim, su afarkas.github.com. URL consultato il 3 maggio 2019 (archiviato dall'url originale il 7 febbraio 2013).
  3. ^ navigator.id, su developer.mozilla.org, Mozilla Developer Network, 30 giugno 2012. URL consultato il 25 marzo 2014 (archiviato dall'url originale il 3 agosto 2012).

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

Read other articles:

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (أبريل 2019) ديفيد ر. مونتجومري   معلومات شخصية الميلاد 7 سبتمبر 1961 (62 سنة)  مواطنة الولايات المتحدة  الحياة العملية المدرسة الأم جامعة ستانفوردجامعة كاليفورنيا، بر

Avi WigdersonLahir09 September 1956 (umur 67)IsraelAlmamaterTechnionPrinceton University (Ph.D.)PenghargaanPenghargaan Nevanlinna (1994)Penghargaan Gödel (2009)Penghargaan Knuth (2019)Penghargaan Abel (2021)Karier ilmiahBidangIlmu komputer teoretisInstitusiInstitute for Advanced StudyDisertasiStudies in Computational Complexity (1983)Pembimbing doktoralRichard LiptonMahasiswa doktoralDorit AharonovRan Raz Avi Wigderson (Ibrani: אבי ויגדרזון; lahir 9 September 1956 ...

Belgischer Rundfunk Fernsehsender (öffentlich-rechtlich) Programmtyp Regionalprogramm Empfang DVB-T, UKW, DAB und Kabelfernsehen Bildauflösung (Eintrag fehlt) Sendestart 1977 (als Belgischer Hör- und Fernsehfunk bereits seit 1964, als ELA – Emissions en langue allemande seit 1945) Sprache Deutsch Sitz Eupen Sendeanstalt Belgischer Rundfunk (BRF) Intendant Alain Kniebs Programmchef Olivier Krickel Website Der Belgische Rundfunk (BRF), ehemals Belgischer Hör- und Fernsehfunk (BHF), ist die

Japanese manga series by Nakaba Suzuki Nanatsu no Taizai redirects here. For Hobby Japan's media franchise of the same name, see Seven Mortal Sins. The Seven Deadly SinsFirst tankōbon volume cover, featuring Elizabeth Liones (left), Meliodas (center) and Hawk (right)七つの大罪(Nanatsu no Taizai)GenreAdventure[1]Fantasy[1] MangaWritten byNakaba SuzukiPublished byKodanshaEnglish publisherNA: Kodansha USAMagazineWeekly Shōnen MagazineDemographicShōnenOriginal ru...

2022 animated film directed by Makoto Shinkai For other uses, see Suzume (disambiguation). SuzumeTheatrical release posterKanjiすずめの戸締まりLiteral meaningSuzume's Locking UpRevised HepburnSuzume no Tojimari Directed byMakoto ShinkaiWritten byMakoto ShinkaiProduced by Kōichirō Itō Genki Kawamura Starring Nanoka Hara Hokuto Matsumura Eri Fukatsu Shota Sometani Sairi Ito Kotone Hanase Kana Hanazawa Matsumoto Hakuō II CinematographyRyōsuke TsudaEdited byMakoto ShinkaiMusic by Rad...

Japanese manga series and franchise This article is about the manga series. For the anime series of the same name, see Attack on Titan (TV series). For related items, see Attack on Titan (disambiguation). AoT redirects here. For other uses, see AOT. Attack on TitanFirst tankōbon volume cover, featuring Eren Yeager about to attack the oncoming Colossal Titan進撃の巨人(Shingeki no Kyojin)GenreAction[1]Dark fantasy[2]Post-apocalyptic[3][4] MangaWritten ...

Football tournament season 1998 DFB-LigapokalTournament programme coverTournament detailsCountryGermanyTeams6Final positionsChampionsBayern MunichRunner-upVfB StuttgartTournament statisticsMatches played5Goals scored16 (3.2 per match)Scoring leader(s)Giovane Élber (3)← 19971999 → The 1998 DFB-Ligapokal was the second edition of the DFB-Ligapokal. In a repeat of last year's competition, Bayern Munich beat VfB Stuttgart in the final. Participating club...

James Loney Datos personalesNacimiento Houston (Estados Unidos)7 de mayo de 1984Nacionalidad(es) EstadounidenseCarrera deportivaDeporte BéisbolClub profesionalDebut deportivo 4 de abril de 2006(Los Angeles Dodgers)Porcentaje de bateo .288Home runs 55Carreras impulsadas 353Posición Primera baseDorsal(es) 7Bateo / Lanz. Izquierda / IzquierdaTrayectoria Los Angeles Dodgers (2006-2012) Boston Red Sox (2012) Tampa Bay Rays (2012-2016) New York Mets (2016) Mellizos LG (2017) Sugar Land ...

Not to be confused with Siriraj Hospital. Hospital in Bangkok, ThailandSiriraj Piyamaharajkarun Hospital โรงพยาบาลศิริราช ปิยมหาราชการุณย์The Park in Siriraj Bimuksthan Museum in Siriraj Piyamaharajkarun HospitalGeographyLocation2 Wang Lang Road, Siriraj Subdistrict, Bangkok Noi, Bangkok, ThailandCoordinates13°45′35″N 100°29′09″E / 13.759621°N 100.485931°E / 13.759621; 100.485931OrganisationCar...

ラウダ航空 004便 1989年に撮影された事故機出来事の概要日付 1991年5月26日概要 逆噴射装置の誤作動による空中分解現場 スパンブリー・ダーンチャーン郡北緯14度57分00秒 東経99度27分00秒 / 北緯14.95000度 東経99.45000度 / 14.95000; 99.45000座標: 北緯14度57分00秒 東経99度27分00秒 / 北緯14.95000度 東経99.45000度 / 14.95000; 99.45000乗客数 213乗員数 10負傷�...

This article does not cite any sources. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Darghouth Turkish Bath – news · newspapers · books · scholar · JSTOR (July 2015) (Learn how and when to remove this template message) The topic of this article may not meet Wikipedia's general notability guideline. Please help to demonstrate the notability of the topic by citing...

This article does not cite any sources. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Coralie Grévy – news · newspapers · books · scholar · JSTOR (August 2018) (Learn how and when to remove this template message) You can help expand this article with text translated from the corresponding article in French. (March 2014) Click [show] for important translatio...

2000 studio album by HIMRazorblade RomanceStudio album by HIMReleased24 January 2000 (2000-01-24)Recorded1999StudioRockfield (Rockfield, Wales)GenreGothic rock[1]Length42:40LabelBMGProducerJohn FryerHIM chronology Greatest Lovesongs Vol. 666(1997) Razorblade Romance(2000) Deep Shadows and Brilliant Highlights(2001) Singles from Razorblade Romance Join Me in DeathReleased: November 1999 Right Here in My ArmsReleased: March 2000 Your Sweet Six Six SixReleased: Jun...

Mexican muralist (1886–1957) In this Spanish name, the first or paternal surname is Rivera y Barrientos and the second or maternal family name is Acosta y Rodríguez. Diego RiveraBornDiego María de la Concepción Juan Nepomuceno Estanislao de la Rivera y Barrientos Acosta y Rodríguez(1886-12-08)December 8, 1886Guanajuato City, MexicoDiedNovember 24, 1957(1957-11-24) (aged 70)Mexico City, MexicoResting placePanteón de Dolores, MexicoEducationSan Carlos AcademyKnown forPa...

16 detonations of atomic bombs in the Eurasian country See also: List of nuclear weapons tests of the Soviet Union 1970Nuclear blast animationInformationCountrySoviet UnionTest siteDegelen, Semipalatinsk, Kazakhstan; Mangystau, Kazakhstan; NZ Area B, Matochkin Shar, Novaya Zemlya, Russia; Orenburg, Russia; Sary-Uzen/Murzhik, Semipalatinsk, KazakhstanPeriod1970Number of tests16Test typeunderground shaft, tunnelMax. yield2.2 megatonnes of TNT (9.2 PJ)Test series chronology← ...

Stemma della Provincia autonoma di Bolzano Il presidente della Provincia autonoma di Bolzano (in tedesco Landeshauptmann Südtirols) è il capo del governo dell'Alto Adige. Indice 1 Lista 1.1 Linea temporale 2 Note 3 Voci correlate 4 Collegamenti esterni Lista N° Presidente Partito Giunta Periodo Legislatura Presidenti della Provincia di Bolzano 1 Karl Erckert(1894-1955) Südtiroler Volkspartei SVP-DC-PSLI 1948–1952 I(1948) SVP-DC 1952–1955[1] II(1952) 2 Alois Pupp(1900-1969) Sü...

Range of light commercial vehicles produced by Ford Not to be confused with Ford Transit Connect or Ford Transit bus. Motor vehicle Ford TransitOverviewManufacturerFordProduction1965–presentModel years2015–present (North America)Body and chassisClassLight commercial vehicle (M)Layout Front-engine, rear-wheel-drive (1953–present) Front-engine, front-wheel-drive (2000–present) Front-engine, four-wheel-drive (1977–1986, 2000–present) ChronologyPredecessor Europe: Ford Thames 400...

Single by Tatsuro Yamashita, Ride on TimeSingle by Tatsuro Yamashitafrom the album Ride on Time B-sideRainy WalkReleasedMay 1, 1980GenreCity popRockPopLength9:30 (Side 1 & 2)LabelAIR/RVCProducer(s)Tatsuro YamashitaTatsuro Yamashita singles chronology Eien no Full Moon (1979) Ride on Time (1980) My Sugar Babe (1980) Ride on Time is the sixth single by Japanese singer-songwriter Tatsuro Yamashita, released in May 1980. This was his first single to enter the Oricon Singles Chart, peaking in ...

Australian alternative indie band The CairosThe Cairos with Dj Sammy T at Abbey Road 2014Background informationOriginBrisbane, Queensland, AustraliaGenresAlternative, IndieYears active2009 (2009)–2016 (2016)LabelsIsland Records AustraliaPast members Alistar Richardson Alfio Alivuzza Reuben Schafer Jacob Trotter BC Michaels Sean Caskey Dan Koyama Websitethecairos.com.au The Cairos were a Brisbane musical group signed to Island Records Australia.[1] The band formed in Brisba...

Firearm with flint-striking ignition For other uses, see Flintlock (disambiguation). Flintlock of an 18th-century hunting rifle, with flint missing. Flintlock is a general term for any firearm that uses a flint-striking ignition mechanism, the first of which appeared in Western Europe in the early 16th century. The term may also apply to a particular form of the mechanism itself, also known as the true flintlock, that was introduced in the early 17th century, and gradually replaced earlier fi...