2010-05-20 16 views
19

Tôi đang xem W3C specs for the script tag và tôi nhận thấy bạn có thể chỉ định VBScript và TCL làm loại ngôn ngữ. Điều này cực kỳ mới đối với tôi; Tôi đã từng thấy Javascript được sử dụng với thẻ tập lệnh.Loại ngôn ngữ nào được phép trong thẻ tập lệnh HTML?

Tại sao các ngôn ngữ khác không được sử dụng phổ biến hơn và có danh sách đầy đủ các ngôn ngữ bạn có thể sử dụng trong thẻ này không?

Trả lời

18

Bạn có thể đặt bất cứ thứ gì bạn muốn vào đó. Đó là toàn bộ điểm loại MIME.

Câu hỏi dĩ nhiên là liệu trình duyệt của người dùng có thực sự có thể diễn giải được hay không. Nhưng điều đó không thực sự cụ thể đối với phần tử <script>. Trình duyệt của tôi, ví dụ, chỉ hiểu CSS cho bảng định kiểu, những người khác cũng hiểu XSLT. Trình duyệt của tôi chỉ hiểu HTML, XHTML, HTML5, MathML và SVG cho tài liệu, những trình duyệt khác cũng hiểu PDF hoặc không hiểu MathML. Trình duyệt của tôi hiểu PNG trong suốt, những người khác thì không. Trước khi bằng sáng chế GIF hết, có một số trình duyệt không hiểu GIF, trong khi những người khác đã trả phí bản quyền (hoặc sử dụng bằng sáng chế bất hợp pháp hoặc được phát triển ở khu vực pháp lý nơi bằng sáng chế phần mềm là bất hợp pháp) và đã hiểu GIF. Một số trình duyệt hiểu video H.264, những người khác Theora.

Nói chung, ngôn ngữ duy nhất được đảm bảo được hiểu bởi tất cả các trình duyệt, là ECMAScript 3rd Edition. Hầu hết các trình duyệt cũng hiểu một số tập hợp con của JavaScript.

Nhiều phiên bản Internet Explorer hiểu VBScript.

Trình biên dịch CoffeeScript có thể được biên dịch thành ECMAScript và được nhúng vào một trang web, để bạn có thể sử dụng CoffeeScript trong trang của mình thông qua loại text/coffeescript MIME.

Có một dự án có tên HotRuby, là một thông dịch viên bytecode YARV được viết bằng ECMAScript. Nó cho phép bạn sử dụng text/ruby.

Microsoft có một dự án gọi là Gestalt, trong đó sử dụng IronRuby và IronPython chạy trên đầu trang của DLR bên trong Silverlight để cung cấp hỗ trợ cho text/pythontext/ruby (và có lẽ bất kỳ ngôn ngữ mà có thể chạy trên đầu trang của DLR, ví dụ như Đề án, Mozilla đã có một dự án trong khi một lần nữa được gọi là IronMonkey, tôi tin rằng, nhúng nhiều công cụ thực thi phổ biến, chẳng hạn như MRI Ruby, CPython, Perl và những người khác vào Firefox, cho phép sử dụng tất cả những ngôn ngữ cho kịch bản trình duyệt.

Tôi nhớ đọc ở đâu đó rằng ai đó đã xây dựng một plugin cho tcc (trình biên dịch C nhỏ) hỗ trợ, cho phép bạn sử dụng text/c.

Chỉ vài ngày trước, Miguel de Icaza (người sáng tạo của Mono) đã đề xuất rằng ISO CLI nên được thêm vào trình duyệt dưới dạng nền tảng kịch bản, cho phép bạn sử dụng mã byte CIL để tạo mã thông qua loại application/cil MIME.

3

Tại sao không phải là ngôn ngữ khác hơn thường được sử dụng, và có một danh sách đầy đủ ngôn ngữ bạn có thể sử dụng trong vòng thẻ này?

Vì javascript được hỗ trợ bởi tất cả các trình duyệt không giống như VBS chỉ được hỗ trợ bởi IE.

Lưu ý: Thuộc tính language bị phản đối bây giờ, sử dụng thuộc tính type chỉ ví dụ:

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

Đây là lý do tại sao tôi gọi nó trong câu hỏi của tôi là "loại ngôn ngữ". Mặc dù về mặt kỹ thuật không phải là cụm từ chính xác, tôi biết rằng "ngôn ngữ" bị khấu hao và muốn truyền đạt điều đó (mặc dù rất khó). Tuy nhiên, đây là lời nhắc quan trọng bởi vì thuộc tính bị khấu hao, nhưng tôi vẫn thấy nó thỉnh thoảng ... – Corey

1

Bạn có thể chỉ định bất kỳ ngôn ngữ trình duyệt có thể giải thích, tôi tưởng tượng. Hiện tại, text/javascript là người duy nhất được hỗ trợ trên các trình duyệt.

VBScript có sẵn trong IE trong một số trường hợp và do đó (rõ ràng) bị giới hạn đối với Windows và trình duyệt đó. Nó không thực sự là một lựa chọn nếu bạn muốn xây dựng các trang web được chạy trên các trình duyệt và nền tảng. Tôi nghĩ bạn cũng có thể sử dụng các tập lệnh Windows Script Host trong IE, nhưng tôi không quen với các chi tiết.

Bạn đã thấy triển khai TCL ở đâu? Nó sẽ rất hay để xem đấy.

Vì mục đích đầy đủ, PHP hiểu được <script language="php"> thẻ để chỉ định bắt đầu một khối PHP (reference). Điều này không thực sự được tính trong danh sách IMO của bạn vì nó bị phát hiện và diễn giải ở phía máy chủ, nó chỉ hỗ trợ cú pháp language= không được chấp nhận, nhưng vẫn còn.

+0

TCL? Tôi chưa bao giờ thấy nó được sử dụng ở bất cứ đâu ... tuy nhiên, trang W3C đó có một ví dụ về nó. Đó là điều đưa ra câu hỏi của tôi; Nó thật lạ. – Corey

+0

@Bạn có thể đăng liên kết không? Tôi không thể nhìn thấy nó, tôi đang xem tại đây: http://www.w3.org/TR/REC-html40/types.html#type-script –

+0

Cuộn xuống một chút: http: //www.w3. org/TR/REC-html40/tương tác/scripts.html # h-18.2.2.3 – Corey