Bazując na pytaniu, kod jQuery nie działa w IE , text/javascript
jest używany w dokumentach HTML, więc Internet Explorer może go zrozumieć.
Ale zastanawiam się, kiedy używałbyś application/javascript
, a co ważniejsze, dlaczego miałbyś go używać zamiast text/javascript
?
javascript
mime-types
Mark Baijens
źródło
źródło
Odpowiedzi:
Teoretycznie, według specyfikacji RFC 4329 ,
application/javascript
.Powód, dla którego ma to być,
application
nie ma nic wspólnego z tym, czy typ jest czytelny, czy wykonywalny. Dzieje się tak, ponieważ istnieją niestandardowe mechanizmy określania zestawu znaków określone przez sam język / typ, a nie tylko przez ogólnycharset
parametr. Podtyptext
powinien mieć możliwość transkodowania przez proxy na inny zestaw znaków, zmieniając parametr zestawu znaków. Nie dotyczy to JavaScript, ponieważ:za. RFC mówi, że agenci użytkownika powinni węszyć BOM w skrypcie, aby określić typ (nie jestem pewien, czy jakakolwiek przeglądarka faktycznie to robi);
b. przeglądarki używają innych informacji - łącznie z kodowaniem strony, aw niektórych przeglądarkach
script charset
atrybutem - do określenia zestawu znaków. Zatem każdy serwer proxy, który próbowałby transkodować zasób, złamałby jego użytkowników. (Oczywiście w rzeczywistości nikt i tak nigdy nie używa transkodujących serwerów proxy, ale taki był zamiar).Dlatego dokładne bajty pliku muszą być dokładnie zachowane , co czyni go
application
typem binarnym, a nie technicznie opartym na znakachtext
.Z tego samego powodu
application/xml
jest oficjalnie preferowany w stosunku dotext/xml
: XML ma własne mechanizmy sygnalizacji zestawu znaków w paśmie. Wszyscy ignorują teżapplication
XML.text/javascript
itext/xml
może nie być oficjalną właściwą rzeczą, ale jest to, czego wszyscy używają dzisiaj ze względu na kompatybilność, a powody, dla których nie są one właściwe, są praktycznie całkowicie nieważne.źródło
application/javascript
a IE działa w trybie zgodności zIE=8
. Wygląda na to, że skrypty wbudowane nie są odpowiednio oceniane.text/javascript
działa dobrze tam.X-Content-Type-Options: nosniff
aby uniemożliwić przeglądarce interpretację typu.Server: nginx
lub czegokolwiek, co wysyła nginx. Jakby ktoś, kto jest w stanie znaleźć dziurę, potrzebuje wyraźnego nagłówka, aby wiedzieć, jaki serwer uruchamiasz ...Problem z typem MIME w Javascript polega na tym, że od lat nie ma standardu. Teraz mamy application / javascript jako oficjalny typ MIME.
Ale w rzeczywistości typ MIME nie ma żadnego znaczenia, ponieważ przeglądarka może sam określić typ. Dlatego specyfikacje HTML5 stanowią, że plik
type="text/javascript"
nie jest już wymagany.źródło
application
ponieważ.js
-Pliki nie są czymś, co użytkownik chce przeczytać, ale czymś, co powinno zostać wykonane.źródło
text
ibinary
albo jakoapplication
application / javascript jest prawidłowym typem do użycia, ale ponieważ nie jest obsługiwany przez IE6-8, utkniesz z tekstem / javascript. Jeśli nie zależy Ci na poprawności (z wyłączeniem HTML5), po prostu nie określaj typu.
źródło
application/javascript
.