Berdasarkan pertanyaan, kode jQuery tidak berfungsi di IE , text/javascript
digunakan dalam dokumen HTML sehingga Internet Explorer dapat memahaminya.
Tapi saya bertanya-tanya, kapan Anda akan menggunakannya application/javascript
, dan yang lebih penting, mengapa Anda menggunakannya text/javascript
?
javascript
mime-types
Mark Baijens
sumber
sumber
Jawaban:
Secara teori, menurut RFC 4329 ,
application/javascript
.Alasannya seharusnya
application
tidak ada hubungannya dengan apakah jenisnya dapat dibaca atau dieksekusi. Itu karena ada mekanisme penentuan charset khusus yang ditetapkan oleh bahasa / jenis itu sendiri, bukan hanyacharset
parameter generik . Subtipetext
harus dapat ditranskodekan oleh proxy ke charset lain, mengubah parameter charset. Ini tidak benar dari JavaScript karena:Sebuah. RFC mengatakan agen pengguna harus melakukan BOM-sniffing pada skrip untuk menentukan tipe (saya tidak yakin apakah ada browser yang melakukan ini);
b. browser menggunakan informasi lain — penyandian halaman yang disertakan dan pada beberapa browser
script charset
atributnya — untuk menentukan charset. Jadi setiap proksi yang mencoba transcode sumber daya akan merusak penggunanya. (Tentu saja dalam kenyataannya tidak ada yang pernah menggunakan proxy transcoding, tapi itu maksudnya.)Oleh karena itu byte file yang tepat harus dipertahankan dengan tepat , yang membuatnya menjadi
application
tipe biner dan tidak berbasis karakter secara teknistext
.Untuk alasan yang sama,
application/xml
secara resmi lebih disukai daripadatext/xml
: XML memiliki mekanisme pensinyalan charset in-band sendiri. Dan semua orang mengabaikanapplication
XML juga.text/javascript
dantext/xml
mungkin bukan Hal yang Resmi resmi, tetapi ada apa yang semua orang gunakan saat ini untuk alasan kompatibilitas, dan alasan mengapa mereka bukan hal yang benar secara praktis sama sekali tidak penting.sumber
application/javascript
dan IE berjalan pada mode kompatibilitas denganIE=8
. Sepertinya skrip sebaris tidak dievaluasi dengan benar.text/javascript
berfungsi dengan baik di sana.X-Content-Type-Options: nosniff
untuk mencegah browser menginterpretasikan tipe tersebut.Server: nginx
atau apa pun yang dikirim nginx. Seolah siapa pun yang mampu menemukan lubang perlu tajuk eksplisit untuk mengetahui server apa yang Anda jalankan ...Masalah dengan tipe MIME Javascript adalah bahwa tidak ada standar selama bertahun-tahun. Sekarang kita punya aplikasi / javascript sebagai tipe MIME resmi.
Namun sebenarnya, tipe MIME tidak masalah sama sekali, karena browser dapat menentukan jenisnya sendiri. Itu sebabnya spesifikasi HTML5 menyatakan bahwa
type="text/javascript"
itu tidak lagi diperlukan.sumber
application
karena.js
-Files bukan sesuatu yang ingin dibaca pengguna tetapi sesuatu yang harus dijalankan.sumber
text
, danbinary
sebagaiapplication
-OR "tujuan" dari jenis kata seperti dalam "gambar", atau "dokumen", dll.application / javascript adalah jenis yang benar untuk digunakan tetapi karena tidak didukung oleh IE6-8 Anda akan terjebak dengan teks / javascript. Jika Anda tidak peduli tentang validitas (dikecualikan HTML5) maka jangan menentukan jenis.
sumber
application/javascript
.