2011-11-08 22 views
23

Tôi chỉ muốn hỏi tên sách nói gì. Chuỗi sau được yêu cầu vào thẻ tập lệnh HTML?JavaScript <!-- //--> là bắt buộc?

<!-- 
//--> 

Nếu tôi không sử dụng chúng điều gì sẽ xảy ra?

+3

Ai đó có thể giải thích cho tôi tại sao câu hỏi này nhận được 6 phiếu bầu không? Đó là một câu hỏi có thể được trả lời bằng cách chỉ cần gõ tiêu đề vào Google, ergo: không cần nỗ lực. – CodeCaster

+18

@CodeCaster: Điều duy nhất nên quan trọng là một câu hỏi được hỏi và không phải là một bản sao. Về lâu dài, SO có thể là một tài liệu tham khảo tốt hơn nhiều sau đó Google. (Và điều đó không tính đến việc Google đang đánh chỉ mục các biểu tượng và các toán tử lạ như thế nào) – hugomg

+9

Tôi có thể viết xuống một bình luận không? (Gõ [JavaScript là bắt buộc?] (Http: // www.google.com/search?q=JavaScript+%3C!--+%2F%2F--%3E+are+required%3F) vào Google là _not_ rất hữu ích.) –

Trả lời

34

Không trừ khi bạn đang nhắm mục tiêu các trình duyệt trước phần tử <script> (ví dụ: Netscape 1 và bạn bè). (Gợi ý: Bạn không phải).

Nếu bạn không sử dụng chúng và trình duyệt cũ (quá cũ nó thậm chí không thể đối phó với tiêu đề Máy chủ HTTP cần thiết cho các trang web sử dụng máy chủ ảo) để truy cập trang web, sau đó nội dung của phần tử <script> sẽ được coi là văn bản sẽ được hiển thị.

Đọc thêm: Comments and CDATA: The mysterious history of script and style in HTML

+15

Tôi sẽ không nói "gợi ý: bạn không", nhưng giống như "gợi ý: nếu bạn đang làm, bạn đang làm sai" – Romain

+0

Álvaro đặt ra một điểm quan trọng trong câu trả lời của mình Mặc dù: Nếu không có CDATA thoát, trang không còn hợp lệ XML nếu một ký tự meta như '<' được chứa trong tập lệnh. Tôi nghĩ rằng dựa vào các ứng dụng âm thầm sửa chữa dữ liệu không hợp lệ là phong cách xấu. –

+1

@Simon Richter - Câu hỏi là về HTML chứ không phải XHTML. Nó cũng đặc biệt về việc sử dụng các chú thích xung quanh khối tập lệnh. (Và vấn đề XHTML * được đề cập trong liên kết mà tôi cung cấp để đọc thêm) – Quentin

3

Nếu bạn không sử dụng chúng, một trình duyệt từ sức hiển thị đầu những năm 90 của nguồn mã JS thay vì chạy nó.

3

Không, chúng không bắt buộc. Cần có thói quen này để hỗ trợ các trình duyệt thực sự cũ và có liên quan một chút đến việc bao gồm các thẻ CDATA cần được đưa vào cho mục đích xác thực. Không ai trong số họ được yêu cầu, nhưng phục vụ hoặc đã phục vụ mục đích của họ như là rõ ràng từ một số câu trả lời phức tạp hơn.

Xem: When is a CDATA section necessary within a script tag?

+5

Các dấu CDATA không liên quan gì đến "các trình duyệt cũ", chúng dành cho các trình duyệt phân tích cú pháp XHTML với trình phân tích cú pháp XML (tức là chính xác). Các bình luận không liên quan gì đến việc xác thực (ngoại trừ do tai nạn nếu chúng bị lạm dụng trong XHTML). – Quentin

+0

Tôi đã lặp lại để làm cho nó rõ ràng hơn những gì tôi có ý nghĩa, nhưng tất nhiên bạn hoàn toàn đúng. – Pieter

+0

@Quentin Tôi không nghĩ rằng có bất cứ điều gì thực sự cấm chính thức bao gồm nội dung như nội dung văn bản - chỉ là sau đó bạn được yêu cầu thoát khỏi mọi hơn/ít hơn/ampersand dưới dạng thực thể html. sử dụng CDATA có nghĩa là bạn chỉ phải đối phó với chuỗi ký tự không phổ biến ']]>' (mà bạn có thể làm bằng cách đơn giản bao gồm khoảng cách giữa hai thẻ) – Random832

1

Google "tại sao nhận xét ra javascript trong html", đầu tiên hit:

http://www.howtocreate.co.uk/tutorials/javascript/incorporate

này là không cần thiết nữa. Tất cả các trình duyệt hiện tại đều biết các thẻ script và cách xử lý nội dung của chúng, vì chúng là một phần của HTML từ HTML 3. Các trình duyệt không hiểu HTML 3 hoặc các script (chúng hầu như không bao giờ được sử dụng) sẽ hiển thị kịch bản như thể đó là nội dung của trang. Bạn có thể ẩn tập lệnh khỏi chúng bằng cách nhận xét kịch bản của bạn với các nhận xét HTML chuẩn.

1

99% thời gian, chúng không còn cần thiết nữa trừ khi bạn đang chạy một số trình duyệt cũ thực sự!

8

Điều tồi tệ hơn có thể xảy ra là trang của bạn được truy lục bởi một tác nhân người dùng không nhận thức được thẻ <script> và cố gắng phân tích cú pháp khối tập lệnh của bạn dưới dạng HTML thông thường. Mã JavaScript sẽ được xử lý dưới dạng văn bản thông thường và các ký hiệu < có thể ảnh hưởng đến đánh dấu trang. Một ví dụ buộc:

<script type="text/javascript"> 
if(a<del || a>b){ 
    foo(); 
} 
</script> 
Lorem ipsum dolor sit amet. 

... có thể làm cho văn bản đã xóa như xấu xí:

if (ab) {foo(); } Lorem ipsum dolor ngồi amet.

Những đại lý người dùng cũ có tồn tại không? Oh, chắc chắn họ làm. Xin lưu ý tôi đã cẩn thận tránh từ "trình duyệt". Câu hỏi không phải là ai đang dùng Mosaic ngày nay. Đó là một trang web của bạn có thể được đọc bởi một trình phân tích cú pháp dựa trên regexp dựa trên PHP được viết kém.

Nếu bạn quan tâm?Vâng, có thể không :)

+0

Hành vi này thậm chí không lỗi thời. –

+1

@Simon Richter - Vâng, đúng thế. Hành vi xảy ra khi trình duyệt không nhận ra phần tử ' 'đầu tiên từ kết thúc tập lệnh (giữa-JS-string). – Quentin

+0

Tôi tin rằng chuỗi ký tự '

+0

@DanielPryden, không thực sự quan trọng anyway, [html5 spec] (http://dev.w3.org/html5/spec/syntax.html#comments) chỉ định rằng một chú thích không thể chứa hai dấu trừ liên tiếp ('- -'), mà phải là một lá cờ đỏ lớn là một lý do * không * để sử dụng một bình luận xung quanh JavaScripts. – zzzzBov

0

Nhận xét mã JavaScript theo cách này cũng có thể ngăn nội dung lập chỉ mục trong công cụ tìm kiếm và có thể mong muốn trong một số trường hợp.

Ví dụ: một số lần trước, tôi đã tìm thấy rất nhiều sự cố "không tìm thấy trang" trong công cụ quản trị trang web của Google. Sau khi phân tích các url một cách đơn giản, tôi đã phát hiện ra rằng Google nhận tất cả các biến giống như đường dẫn từ mã JS của tôi (như "name/001"), đã kết hợp chúng với url hiện tại (mysite.info/staff) và cố gắng yêu cầu kết quả url. Không thành công, tất nhiên rồi.

Sau khi chèn <!-- //--> vào một số khối JS, tất cả các vấn đề "không tìm thấy trang" biến mất trong vòng một hoặc hai tháng.

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