ECMAScript Fifth Edition (wydana w grudniu 2009 r.) Wprowadza kilka nowych metod (szczegóły: patrz this table). Jednak wciąż istnieją starsze przeglądarki, które nie wdrażają tych nowych metod.Jak dostarczyć ECMAScript 5 (ES 5) -shim?
Na szczęście istnieje wygodny skrypt (napisany w JavaScript) - ES5-shim - który implementuje te metody ręcznie w środowiskach, w których nie istnieją.
Jednak nie jestem pewien, w jaki sposób zapewnić ES5-podkładkę ... Mam tylko „dać” je do wszystkich przeglądarek, tak:
<script src="es5-shim.js"></scipt>
Albo powinienem obejmować sprawdzenie, aby tylko „przeszkadza” tych przeglądarek, które naprawdę potrzebują, tak jak poniżej:.
<script>
if (!Function.prototype.hasOwnProperty('bind')) {
(function() {
var shim = document.createElement('script');
shim.src = 'es5-shim.js';
var script = document.getElementsByTagName('script')[0];
script.parentNode.insertBefore(shim, script);
}());
}
</script>
(używam Function.prototype.bind
aby sprawdzić, czy przeglądarka implementuje wszystkie nowe ECMAScript 5 metod zgodnie z tabelą kompatybilności która I połączone powyżej, jest bind
"ostatni bastion", jeśli chodzi o wdrażanie ECM Metody AScript 5.)
Oczywiście, aby ta podkładka była skuteczna, musi być wykonana przed wszystkimi innymi skryptami, co oznacza, że chcemy dołączyć wyżej wymienione elementy SCRIPT na początku strony (w HEAD, przed wszystkimi innymi elementami SCRIPT).
Czy ten drugi przykład byłby dobrym sposobem na udostępnienie przeglądarki ECMAScript 5-shim? Czy istnieje lepszy sposób na zrobienie tego?
Ale to zmusi przeglądarek ES5 kompatybilne (najnowsze IE, Chrome, Firefox, wkrótce Opera), aby pobrać i wykonać podkładkę, która spowalnia strony internetowej niepotrzebnie . Jeśli uda mi się tego uniknąć przy niewielkiej kontroli JavaScript, chętnie to zrobię. –
@ ŠimeVidas: To 8kB. Przy odpowiednim buforowaniu nie ma się czym martwić. – You
Uderzenie wydajności jest znikome, ES5 Shim robi wszystko, co możliwe, aby uniknąć niepotrzebnego wykonywania kodu. – JaredMcAteer