ขึ้นอยู่กับคำถามที่รหัส jQuery ไม่ทำงานใน IE , text/javascriptใช้ในเอกสาร HTML เพื่อให้ Internet Explorer สามารถเข้าใจมัน
แต่ฉันสงสัยว่าเมื่อคุณจะใช้application/javascriptและที่สำคัญทำไมคุณจะใช้มันแทนtext/javascript?
ขึ้นอยู่กับคำถามที่รหัส jQuery ไม่ทำงานใน IE , text/javascriptใช้ในเอกสาร HTML เพื่อให้ Internet Explorer สามารถเข้าใจมัน
แต่ฉันสงสัยว่าเมื่อคุณจะใช้application/javascriptและที่สำคัญทำไมคุณจะใช้มันแทนtext/javascript?
คำตอบ:
ในทางทฤษฎีตามRFC 4329application/javascript ,
เหตุผลที่ควรจะapplicationไม่ใช่สิ่งที่จะทำกับประเภทที่อ่านหรือปฏิบัติการ เป็นเพราะมีกลไกการกำหนดชุดอักขระแบบกำหนดเองที่วางโดยภาษา / ประเภทของตัวเองแทนที่จะเป็นเพียงcharsetพารามิเตอร์ทั่วไป ประเภทย่อยของtextควรจะสามารถแปลงรหัสโดยพร็อกซีเป็นชุดอักขระอื่นได้โดยเปลี่ยนพารามิเตอร์ชุดอักขระ สิ่งนี้ไม่เป็นจริงของ JavaScript เพราะ:
RFC กล่าวว่าตัวแทนผู้ใช้ควรใช้ BOM-sniffing ในสคริปต์เพื่อกำหนดประเภท (ฉันไม่แน่ใจว่าเบราว์เซอร์ใด ๆ ทำเช่นนี้จริง)
ข เบราว์เซอร์ใช้ข้อมูลอื่น ๆ รวมถึงการเข้ารหัสของหน้าและในบางเบราว์เซอร์จะมีการscript charsetระบุคุณสมบัติ ดังนั้นพร็อกซีใด ๆ ที่พยายามแปลงรหัสทรัพยากรจะทำให้ผู้ใช้ล่ม (แน่นอนว่าในความเป็นจริงไม่มีใครเคยใช้พร็อกซี่การแปลงรหัสอยู่ดี แต่นั่นเป็นเจตนา)
ดังนั้นไบต์แน่นอนของไฟล์ต้องได้รับการเก็บรักษาไว้ตรงซึ่งจะทำให้มันไบนารีชนิดและไม่ได้ในทางเทคนิคตัวอักษรตามapplicationtext
ด้วยเหตุผลเดียวกันapplication/xmlเป็นที่ต้องการอย่างเป็นทางการมากกว่าtext/xml: XML มีกลไกการส่งสัญญาณในวงดนตรีของตัวเอง และทุกคนก็ละเว้นapplicationXML เช่นกัน
text/javascriptและtext/xmlอาจไม่ใช่สิ่งที่ถูกต้องอย่างเป็นทางการ แต่มีสิ่งที่ทุกคนใช้ในวันนี้เพื่อเหตุผลด้านความเข้ากันได้และเหตุผลที่ว่าทำไมพวกเขาถึงไม่ใช่สิ่งที่ถูกต้องกำลังพูดจริง ๆ โดยไม่สำคัญ
application/javascriptและ IE IE=8ทำงานบนโหมดที่เข้ากันกับ ดูเหมือนว่าสคริปต์แบบอินไลน์ไม่ได้รับการประเมินอย่างเหมาะสม text/javascriptทำงานได้ดีที่นั่น
X-Content-Type-Options: nosniffเพื่อป้องกันไม่ให้เบราว์เซอร์ตีความประเภทนั้น
Server: nginxหรืออะไรก็ตามที่ nginx ส่ง ราวกับว่าใครก็ตามที่มีความสามารถในการค้นหารูต้องมีเฮดเดอร์ที่ชัดเจนเพื่อรู้ว่าเซิร์ฟเวอร์ใดที่คุณใช้ ...
ปัญหาเกี่ยวกับประเภท MIME ของ Javascript คือยังไม่มีมาตรฐานมานานหลายปี ตอนนี้เรามีapplication / javascriptเป็นประเภท MIME อย่างเป็นทางการ
แต่ที่จริงแล้วประเภท MIME นั้นไม่สำคัญเลยเพราะเบราว์เซอร์สามารถระบุประเภทได้ นั่นเป็นสาเหตุที่ HTML5 ระบุว่าtype="text/javascript"ไม่จำเป็นต้องใช้อีกต่อไป
applicationเพราะ - .jsไฟล์ไม่ใช่สิ่งที่ผู้ใช้ต้องการอ่าน แต่เป็นสิ่งที่ควรดำเนินการ
textและ - binaryหรือapplication"วัตถุประสงค์" ของประเภทที่กล่าวถึงเช่นใน "ภาพ" หรือ "เอกสาร" ฯลฯ
application / javascript เป็นประเภทที่ถูกต้องที่จะใช้ แต่เนื่องจาก IE6-8 ไม่รองรับคุณจะต้องติดอยู่กับ text / javascript หากคุณไม่สนใจเรื่องความถูกต้อง (ยกเว้น HTML5) ก็อย่าเพิ่งระบุประเภท