Bitte sagen Sie nicht, dass sie identisch sind – wenn sie identisch wären, wären sie nicht drei gewesen. Ich weiß, dass beide funktionieren – aber ich würde gerne den Unterschied wissen.
Der Unterschied ist auch ein klassischer Grund, warum Ihre Skripte nicht komprimiert werden. Stellen Sie sicher, dass Sie einen Eintrag in httpCompression für den tatsächlichen Typ haben, den Sie bedienen, und beachten Sie, dass IIS Express standardmäßig nur application/x-javascript und text/* komprimiert.
text/javascript veraltet ist und application/x-javascript war experimentell (daher die x- Präfix) für eine Übergangszeit bis application/javascript standardisiert werden könnten.
Du solltest benutzen application/javascript. Dokumentiert ist dies in der RFC.
Soweit ein Browser betroffen ist, gibt es keinen Unterschied (zumindest in HTTP-Headern). Dies war nur eine Änderung, damit die text/* und application/* MIME-Typ-Gruppen hatten nach Möglichkeit eine einheitliche Bedeutung. (text/* MIME-Typen sind für von Menschen lesbare Inhalte gedacht, JavaScript ist nicht darauf ausgelegt, Menschen direkt Bedeutung zu vermitteln).
Beachten Sie, dass mit application/javascript in dem type -Attribut eines script-Elements führt dazu, dass das Skript in einigen älteren Browsern ignoriert wird (da es sich um eine unbekannte Sprache handelt). Entweder weiter verwenden text/javascript dort oder lassen Sie das Attribut ganz weg (was in HTML 5 erlaubt ist).
Dies ist kein Problem in HTTP-Headern, da Browser universell (soweit mir bekannt ist) entweder den HTTP-Inhaltstyp von Skripten vollständig ignorieren oder modern genug sind, um sie zu erkennen application/javascript.
vielen dank für die ausführliche antwort. Ein weiteres Problem – Sie haben gesagt, dass ich es vollständig weglassen kann (nur HTML5?) – aber meine Frage (die später von jemandem bearbeitet wurde) betraf speziell JS in PHP – wird es als PHP/JS-Kombination auf allen Servern/Browsern funktionieren? wenn ich es ganz weglasse??
– Obmerk Kronen
12. März 2012 um 9:39 Uhr
Die kannst du weglassen typeAttribut auf einen <script> Element. Sie können die nicht auslassen Content-Type HTTP-Header … immer (wenn Sie ihn nicht in PHP angeben, wird PHP standardmäßig text/html was sehr falsch ist).
– QUentin
12. März 2012 um 9:47 Uhr
Sollte CSS nach der für Menschen lesbaren Logik nicht auch unter Anwendung und nicht unter Text eingeordnet werden?
– Fabrício Matté
20. Februar 2014 um 1:18 Uhr
@frnhr Ihre Bearbeitung dieser Antwort hat die beabsichtigte Bedeutung geändert (was besagt, dass text/javascript ist veraltet u application/x-javascript war experimentell). Schlimmer noch, es ließ den Anfang der Antwort inkohärent zurück, mit einem Blockspruch text/javascript ohne ersichtlichen Grund einfach irrelevant oben in der Antwort herumhängen.
– Mark Amery
4. August 2015 um 13:52 Uhr
Verwenden Sie in SVN auf jeden Fall Text/Javascript. SVN behandelt alles, was NICHT mit text/ beginnt, als binär. Um Ihre gesamte SVN-Arbeitskopie zu reparieren, müssen Sie eine mime.cmd-Datei erstellen, die Folgendes enthält: @echo offfor /r . %%X in (*.js) do (svn propset svn:mime-type text/javascript "%%X") was bei seiner Ausführung den MIME-Typ aller JS-Dateien in Ihrem Repository in Text/Javascript ändert. Anschließend müssen Sie die JS-Dateien mit dem neuen MIME-Typ an SVN übergeben.
– Mark Eldridge
2. Juni 2016 um 14:20 Uhr
Mime-Typen beginnend mit x- sind nicht standardisiert. Im Falle von Javascript ist es irgendwie veraltet. Zusätzlich das zweite Code-Snippet
<?Header('Content-Type: text/javascript');?>
erfordert short_open_tags aktiviert werden. du solltest es vermeiden.
<?php Header('Content-Type: text/javascript');?>
Allerdings ist die vollständig korrekter MIME-Typ für Javascript ist
Alte Antwort, aber ich weiß nicht, ob es gut ist, mit kurzen offenen Tags zu beginnen, bis dies keine bewährte Methode ist (wir empfehlen Ihnen dringend, PHP-SOT tatsächlich zu deaktivieren).
– Benftwc
25. September 2017 um 16:13 Uhr
Laut RFC 4329 sollte der richtige MIME-Typ für JavaScript sein application/javascript. Ältere IE-Versionen verschlucken sich jedoch daran, da sie erwarten text/javascript.
Soweit mir bekannt ist, gibt IE keinen Affen, was der HTTP-Inhaltstyp sagt; nur was das HTML type Attribut sagt (und in den HTML 5-Entwürfen kann dieses Attribut für JavaScript weggelassen werden).
– QUentin
12. März 2012 um 9:22 Uhr
@ Quentin ahh … das hat mir Probleme bereitet. Vielen Dank!
– Martin
10. August 2018 um 7:51 Uhr
Verwenden Sie type=”application/javascript”
Bei HTML5 ist das type-Attribut veraltet, Sie können es entfernen. Hinweis: Laut w3.org ist es standardmäßig “text/javascript”, daher würde ich vorschlagen, “application/javascript” hinzuzufügen, anstatt es zu entfernen.
Das type-Attribut gibt die Sprache des Skripts oder das Format der Daten an. Wenn das Attribut vorhanden ist, muss sein Wert ein gültiger MIME-Typ sein. Der Parameter charset darf nicht angegeben werden. Der Standardwert, der verwendet wird, wenn das Attribut fehlt, ist “text/javascript”.
Verwenden Sie “application/javascript”, weil “text/javascript” ist veraltet:
Bereitgestellte Scripting-Medientypen und Kompatibilität
Verschiedene nicht registrierte Medientypen wurden ad hoc verwendet, um in ECMAScript und JavaScript geschriebene Programme zu kennzeichnen und auszutauschen. Diese beinhalten:
Die Verwendung des Top-Level-Typs „Text“ für diese Art von Inhalten ist bekanntermaßen problematisch. Dieses Dokument definiert somit text/javascript und text/
ecmascript, markiert sie aber als “veraltet”. Verwendung von experimentellen und
von nicht registrierten Medientypen, wie oben teilweise aufgeführt, wird abgeraten.
Die Medientypen,
* application/javascript
* application/ecmascript
die ebenfalls in diesem Dokument definiert sind, sind für den allgemeinen Gebrauch bestimmt und sollten stattdessen verwendet werden.
Dieses Dokument definiert gleichwertige Verarbeitungsanforderungen für die
Typen text/javascript, text/ecmascript und application/javascript.
Nutzung und Unterstützung des Medientyps application/ecmascript ist
deutlich weniger verbreitet als andere in definierte Mediengattungen
dieses Dokument. Dieses Dokument nutzt dies zu seinem Vorteil und definiert
strengere Verarbeitungsregeln für diesen Typ, um mehr Interoperabilität zu fördern
wird bearbeitet.
x-Javascript ist experimentell, verwenden Sie es nicht.
13112800cookie-checkUnterschied zwischen den Inhaltstypen application/x-javascript und text/javascriptyes
Der Unterschied ist auch ein klassischer Grund, warum Ihre Skripte nicht komprimiert werden. Stellen Sie sicher, dass Sie einen Eintrag in httpCompression für den tatsächlichen Typ haben, den Sie bedienen, und beachten Sie, dass IIS Express standardmäßig nur application/x-javascript und text/* komprimiert.
– Risiko
9. Februar 2015 um 1:38 Uhr
NB: Eine vollständige Liste der “Javascript-Mime-Typen” finden Sie hier: html.spec.whatwg.org/multipage/…. dh dies ist die Liste der Werte, die ein Browser für a zulassen sollte
script
Stichwortetype
Attribut, wenn dienosniff
Richtlinie angegeben ist. developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…– JohnLBevan
4. Oktober 2017 um 12:40 Uhr