2010-11-16 31 views
105

Tôi đã nhìn thấy cả hai điều này:Thuộc tính 'loại' có cần thiết cho các thẻ <script> không?

<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js'></script> 

và điều này:

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js'></script> 

Có loại thuộc tính quan trọng trong bất kỳ cách nào?

+3

Tôi chưa bao giờ thấy một kịch bản không thực hiện vì một loại thuộc tính thiếu. Tôi đoán nó là một vấn đề của những gì là chính xác nhất, nhưng tôi quan tâm để xem những gì câu trả lời được cung cấp. – clifgriffin

Trả lời

102

Đối với HTML 4.x, thuộc tính typeyêu cầu. (W3):

Thuộc tính này chỉ định ngôn ngữ kịch bản của nội dung của phần tử và ghi đè ngôn ngữ kịch bản mặc định. Ngôn ngữ kịch bản được chỉ định làm loại nội dung (ví dụ: "văn bản/javascript"). Tác giả phải cung cấp giá trị cho thuộc tính này. Không có giá trị mặc định cho thuộc tính này.

Đối HTML 5, nó là tùy chọn. Nếu không được chỉ định, giá trị mặc định là text/javascript. (W3):

Thuộc tính type cung cấp ngôn ngữ của tập lệnh hoặc định dạng dữ liệu. Nếu thuộc tính có mặt, giá trị của thuộc tính phải là loại MIME hợp lệ. Tham số charset không được chỉ định. Mặc định, được sử dụng nếu thuộc tính vắng mặt, là "text/javascript".

+5

Ngoài ra nếu bạn sử dụng nội tại các kịch bản sự kiện trong HTML4 (như trong 'onload',' onclick', 'onmouseover' attributes…) bạn phải định nghĩa' 'trong '' hoặc định cấu hình máy chủ của bạn để gửi 'Content-Script-Type: text/javascript' trong tiêu đề HTTP. – Tometzky

2
+4

Bất kể trình duyệt hiện đang hoạt động như thế nào, bạn tốt hơn rất nhiều theo tiêu chuẩn, để có khả năng tương thích tốt hơn và khả năng tương thích về phía trước. – EricLaw

+22

Nhưng không lâu hơn nữa: http://www.w3.org/TR/html5/scripting-1.html#script: * "Thuộc tính type cung cấp ngôn ngữ của tập lệnh hoặc định dạng của dữ liệu. hiện tại, giá trị của nó phải là loại MIME hợp lệ. Tham số charset không được chỉ định. Mặc định, được sử dụng nếu thuộc tính vắng mặt, là "text/javascript"."* Tâm trí bạn, ** Tôi sẽ tiếp tục sử dụng nó, bất kể –

+6

Mặc dù những gì W3C nói, trong thế giới thực, nó không cần thiết. –

90

trong HTML5 bạn không cần thuộc tính type, nhưng trong HTML < = 4 và (X) HTML nó cần được khai báo

+0

Sẽ tất cả trình duyệt hỗ trợ chính xác'

5

Không, thuộc tính 'loại' không cần thiết trong thẻ. Trừ khi bạn muốn mã của bạn xác thực.

Chúng tôi đã bỏ qua nó trong nhiều năm tại nơi làm việc và nó không bao giờ là một vấn đề. Chúng tôi kiểm tra rất nhiều trên nhiều thiết bị, trình duyệt, v.v. Điều này bao gồm nhiều loại tài liệu HTML4 & XHTML khác nhau.

Tôi tạo ra trang này ít để thử nghiệm trên github: http://kenshub.github.io/script-type.html

Các vấn đề liên quan