Cái nào tốt hơn: <script type = “text / javascript”>… </script> hoặc <script>… </script>


97

Cái nào tốt hơn hoặc thuận tiện hơn để sử dụng:

<script type="text/javascript">...</script> 

hoặc là

<script>...</script>

7
Nếu bạn đang sử dụng javascript như ngôn ngữ sau đó của một khóa học 1 là tốt hơn
Chinmayee G

Tôi đoán rằng hiệu suất mà bạn nhận được từ việc khai báo script là java-script là không đáng kể, nhưng câu hỏi rất hay!
The_Butcher

10
Câu trả lời "đúng" có khác nhau nếu chúng ta sử dụng Html v4 và Html v5 không?
Dimitrios Mistriotis

Nó không phải là cái nào tốt hơn mà là khi nào sử dụng cái gì; khi sử dụng khai báo HTML5 <!doctype html>, không cần sử dụng gợi ý kiểu MIME type="text/javascript"trên <script>thẻ vì nó áp dụng theo mặc định. Mặt khác (không phải HTML5), nó được khuyến khích và khuyến khích (có tham chiếu đến gợi ý kiểu MIME type="text/javascript").
nyedidikeke

Câu trả lời:


137

Bạn có cần một thuộc tính loại nào không? Nếu bạn đang sử dụng HTML5, không. Nếu không, có. HTML 4.01 và XHTML 1.0 chỉ định typethuộc tính theo yêu cầu trong khi HTML5 có nó là tùy chọn, mặc định là text/javascript. HTML5 hiện đã được triển khai rộng rãi, vì vậy nếu bạn sử dụng loại tài liệu HTML5, <script>...</script>nó hợp lệ và là một lựa chọn tốt.

Đối với những gì sẽ xảy ra trong thuộc tính type, kiểu MIME được application/javascriptđăng ký vào năm 2006 nhằm thay thế text/javascriptvà được hỗ trợ bởi các phiên bản hiện tại của tất cả các trình duyệt chính (bao gồm cả Internet Explorer 9). Trích dẫn từ RFC có liên quan :

Do đó, tài liệu này định nghĩa text / javascript và text / ecmascript nhưng đánh dấu chúng là "lỗi thời". Không khuyến khích sử dụng các loại phương tiện thử nghiệm và chưa đăng ký, như đã liệt kê ở phần trên. Các loại phương tiện,

  * application/javascript
  * application/ecmascript

cũng được định nghĩa trong tài liệu này, nhằm mục đích sử dụng phổ biến và nên được sử dụng thay thế.

Tuy nhiên, IE cho đến và bao gồm cả phiên bản 8 không thực thi tập lệnh bên trong một <script>phần tử có typethuộc tính là application/javascripthoặc application/ecmascript, vì vậy nếu bạn cần hỗ trợ IE cũ, bạn sẽ gặp khó khăn text/javascript.


3
Bạn không "cần" typethuộc tính. Members chống HTML4.01 hoặc XHTML 1.0 không phải là những gì bạn nên làm nữa dù sao, và tất cả các trình duyệt sẽ hỗ trợ thẻ của bạn mà khôngtext/javascript
Ian Bão Taylor

9
@Ian: Tại thời điểm viết bài, thông số kỹ thuật HTML5 là một bản nháp đang hoạt động và chưa biến thành trạng thái hiện tại là mục tiêu di chuyển vĩnh viễn. Việc triển khai trình duyệt HTML5 là một chặng đường đáng kể so với hiện tại. Xem xét điều này, tôi nghĩ HTML5 vào thời điểm đó không khả thi để sử dụng trên web nói chung và câu trả lời của tôi là hoàn toàn công bằng và luôn có tuyên bố từ chối trách nhiệm "nếu bạn muốn HTML của mình hợp lệ" . Tôi đồng ý rằng mọi thứ đã tiếp diễn và câu trả lời này có thể làm được với việc sửa đổi, nhưng tôi không đồng ý rằng viết các trang web bằng HTML 4.01 bây giờ luôn là điều sai lầm.
Tim Down

1
+1, vừa phát hiện ra câu hỏi này từ một bản dupe. Nó làm tôi nhớ đến một số bài đăng trên blog của Anne Van Kesteren, bao gồm cả loại JavaScript MIME , nơi anh ấy thảo luận về điều này. Tôi không thể tìm thấy nó, nhưng tôi chắc chắn rằng có một bài đăng mà anh ấy khuyến cáo không nên sử dụng typechút nào vì nó hoạt động trên tất cả các trình duyệt. Có thể đó là một người khác.
Andy E

1
Tôi chỉ muốn nói "cảm ơn" khi tôi đang cố gắng tìm ra lý do tại sao tệp JS "ứng dụng / javascript" không được thực thi trên IE8 trở xuống!
andrewtweber

còn: "text / javascript; version = 1.8" thì sao?
SparK

10

Cả hai đều sẽ hoạt động nhưng tiêu chuẩn xhtml cũng yêu cầu bạn chỉ định type:

<script type="text/javascript">..</script> 

<!ELEMENT SCRIPT - - %Script;          -- script statements -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
  type        %ContentType;  #REQUIRED -- content type of script language --
  src         %URI;          #IMPLIED  -- URI for an external script --
  defer       (defer)        #IMPLIED  -- UA may defer execution of script --
  >

type = content-type [CI] Thuộc tính này chỉ định ngôn ngữ kịch bản của nội dung 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 kiểu 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.

Lưu ý sự nhấn mạnh ở trên.

http://www.w3.org/TR/html4/interact/scripts.html

Lưu ý: Đối với HTML5 (ở xa), typethuộc tính này không bắt buộc và là thuộc tính mặc định.


9

Bạn cần sử dụng <script type="text/javascript"> </script>trừ khi bạn đang sử dụng html5. Trong trường hợp đó, bạn nên thích hơn <script> ... </script>(vì thuộc tính type được chỉ định theo mặc định cho giá trị đó)


5

Đây là tất cả những gì cần thiết:

<!doctype html>
<script src="/path.js"></script>

3

<script type="text/javascript"></script> vì nó đúng cách và tương thích với tất cả các trình duyệt


-2

Với Firefox mới nhất, tôi phải sử dụng:

<script type="text/javascript">...</script>

Hoặc nếu không, tập lệnh có thể không chạy đúng cách.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.