2016-06-17 7 views
2

Die Frage ist Text/Javascript funktioniert auf der ganzen Linie, aber Anwendung/[x-] Javascript ist richtig. Gibt es einen Grund, keinen Text/Javascript zu verwenden?Gibt es einen Fall, in dem Anwendung/Javascript (als MIME-Typ für Javascript) nicht funktioniert?

Hintergrund:

Ich habe eine interessante Ecke Fall entdeckt, wo Chrome wird sich weigern, Javascript als application/x-javascript oder application/javascript als utf-8 kodierten Daten url (so übergebenen Daten auszuführen geben: Anwendung/x-JavaScript; charset = UTF-8, ...)

Insbesondere ermöglicht Chrome:

data:text/javascript; charset=utf-8,.... 
data:application/javascript; charset=utf-8;base64,.... 
data:application/x-javascript; charset=utf-8;base64,..... 

Aber explodiert on:

data:application/x-javascript; charset=utf-8,..... 
data:application/javascript; charset=utf-8,..... 

Basierend auf Googeln scheint es so, als ob RFC 4329 Anwendung/Javascript als Standard diktiert, und es funktioniert in diesem Fall, aber auch das (jetzt veraltet) Text/Javascript.

Nach unten RFC2397, RFC2045, RFC2046 führte keine endgültige Antwort.

+1

Related: [Unterschied zwischen Anwendung/x-Javascript und Text/Javascript Inhaltstypen] (https://stackoverflow.com/questions/9664282/difference-between-application-x-javascript-and-text-javascript-content -Typen) –

+0

Ja, ich sah das und ich weiß, was in der RFC dokumentiert ist, aber ich weiß auch, dass Text/Javascript überall funktioniert und einige Dinge RFCs nicht gehorchen. Wenn es keine nennenswerten Beispiele gibt, dann mache ich das "Richtige", aber nicht die> Korrektheit. – podperson

+0

Ich stelle fest, dass in der verknüpften Antwort ein Kommentar darauf hinweist, dass SVN von application/javascript als Binärdatei behandelt wird. (Aber ich interessiere mich nur für Browser.) – podperson

Antwort

1

Beachten Sie zuerst, dass ich die Frage bearbeitet habe, nachdem ich festgestellt habe, dass Chrome für die Anwendung/Javascript sowie für x-javascript defekt ist.

Es sieht so aus, als wäre es ein Fehler in Chrome. Es lehnt nicht ab, das utf-8 "kodierte" Javascript auszuführen, sondern kollabiert stattdessen Leerzeichen, was zum Beispiel dazu führt, dass irgendeine Definition einer benannten Funktion falsch wird, z. Die Funktion foo() {} wird zu functionfoo() {}. Dies geschieht nicht für Text/JavaScript oder Base64-codierte URLs.

Also, die Antwort ist, Text/Javascript zu verwenden.

Als Nebenbemerkung: es scheint irgendwie wertvoll, darauf zu bestehen, Text/Javascript abzulehnen, während Text/CSS beibehalten wird.