Całe pytanie pasuje do tytułu. I żeby dodać trochę kontekstu: nie pytam, co jest najlepsze zgodnie z tym, co mówią specyfikacje, ale raczej, co działa najlepiej, biorąc pod uwagę różnorodność przeglądarek wdrażanych obecnie.
Niektóre punkty danych:
- Google używa
text/javascript
kodu JS używanego na ich stronie głównej. - Google używa
text/javascript
w Dokumentach Google. - Google używa
application/x-javascript
do obsługi plików JavaScript w swojej usłudze bibliotek Ajax . - Yahoo używa
application/x-javascript
do obsługi swojego JS. - Yahoo używa
application/x-javascript
kodu JavaScript wyświetlanego na ich stronie głównej.
javascript
http
content-type
średnia
źródło
źródło
Odpowiedzi:
text/javascript
jest przestarzałyapplication/x-javascript
był eksperymentalny podczas podejmowania decyzji o przeprowadzce do…application/javascript
to aktualny oficjalny typ MIME dla JSTo powiedziawszy, przeglądarki często ignorują
content-type
przesłane przez serwer i przywiązują dużą wagę dotype
atrybutu (a niektóre mogą jeszcze nie rozpoznawaćapplication/javascript
).Moja rekomendacja:
type
atrybut w elementach skryptuUwaga: specyfikacja HTML jest sprzeczna ze standardem MIME i podjęto próbę zmiany go z powrotem, aby
text/javascript
mogło się to zmienić w przyszłości.źródło
type
atrybucie, ignorując wContent-type
ten sposób prawidłowe zachowanie.application/javascript
więc określenie tego spowoduje zignorowanie skryptu. Programy użytkownika nie powinny ignorować Content-Type. Atrybut type mówi im, czego się spodziewać. Jeśli tego nie popierają, nie powinni zawracać sobie głowy prośbą o to. Jeśli serwer następnie powie, że jest coś innego, powinien kontynuować to, a nie to, co mówi HTML (przynajmniej zgodnie z HTTP, możesz patrzeć na inną specyfikację, nie podałeś żadnych linków).script
elementu, do którego utworzyłem łącze . Moja lektura tej sekcji różni się od tego, co opisujesz; wydaje się, że przykłada dużą wagę dotype
atrybutu i nie wspomina o sprawdzaniuContent-Type
, z wyjątkiem określenia kodowania znaków. Zgadzam się, że wydaje się rozsądne, aby agent użytkownika sprawdził, czy typ treści jest zgodny z oczekiwaniami, ale nie znalazłem w specyfikacji HTML niczego, co tego wymaga lub nawet zaleca.W większości sytuacji typ MIME wysyłany przez serwer nie ma praktycznego znaczenia. Wybrałbym aplikację / javascript , który jest również zalecany przez RFC.
źródło
Jeśli zdecydujesz się używać aplikacji / javascript dla js na swoich stronach, IE7 i IE8 nie uruchomią Twojego skryptu! Obwiniaj firmę Microsoft, ile chcesz, ale jeśli chcesz, aby większość ludzi uruchamiała Twoje strony, użyj tekstu / javascript.
źródło
Tak było
language="javacript"
. Potem zmieniło się natype="text/javascript"
. Teraz jesttype="application/javacript"
. Ok, to robi się głupie. Niektóre starsze przeglądarki nie rozpoznają nowejapplication/javascript
, ale nadal rozpoznają starszątext/javascript
. Planuję nadal używać tego, bo inaczej stracę godziny na próbach zmiany KAŻDEJ instancjitext/javascript
naapplication/javascript
.Teraz pewnego dnia może być odwrotnie. Któregoś dnia najnowsze przeglądarki mogą odrzucić starą technikę, aby zachować ścisłą zgodność ze standardami.
Ale dopóki ludzie przeglądający moją witrynę nie zaczną narzekać, że „od czasu aktualizacji przeglądarki zniknęło około 50% Twojej witryny”, nie mam motywu do zmiany kodu w mojej witrynie.
źródło
Oto odpowiedź na to pytanie w 2020 roku.
text/javascript
to poprawny typ MIME JavaScript zgodny ze standardem HTML , który stanowi:A także :
Trwają prace nad odzwierciedleniem tej rzeczywistości w RFC na poziomie IETF: https://datatracker.ietf.org/doc/draft-ietf-dispatch-javascript-mjs/
Każde stwierdzenie, że „
text/javascript
jest przestarzały”, jest oparte na RFC 4329, które zarówno standard HTML, jak i wspomniana powyżej wersja robocza IETF (tj. Nadchodzący RFC) są wyraźnie poprawiane.źródło
To było „text / javascript”, ale jest przestarzałe (zobacz listę IANA ), a teraz powinno to być „application / javascript” (zobacz inną listę IANA ).
źródło