Tại sao không nên sử dụng `& apos;` để thoát các trích dẫn đơn?


158

Như đã nêu trong, Khi nào các trích dẫn đơn trong HTML trở nên phổ biến? trích dẫn nhúng Jquery trong thuộc tính , mục Wikipedia trên HTML cho biết như sau:

Ký tự trích dẫn đơn ('), khi được sử dụng để trích dẫn một giá trị thuộc tính, cũng phải được thoát dưới dạng 'hoặc '(KHÔNG nên thoát như 'ngoại trừ trong các tài liệu XHTML) khi nó xuất hiện trong chính giá trị thuộc tính.

Tại sao không 'nên sử dụng? Ngoài ra, có "an toàn để được sử dụng thay vì "?



7
Lưu ý rằng IE8 không hỗ trợ '.
Paul D. Chờ

Câu trả lời:


178

"nằm trong danh sách chính thức của các thực thể HTML 4 hợp lệ , nhưng 'không phải.

Từ C.16. Tham chiếu nhân vật được đặt tên ' :

Tham chiếu ký tự được đặt tên ' (dấu nháy đơn, U + 0027) đã được giới thiệu trong XML 1.0 nhưng không xuất hiện trong HTML. Do đó, các tác giả nên sử dụng 'thay vì 'làm việc như mong đợi trong các tác nhân người dùng HTML 4.


3
"là trong danh sách mặc dù, vì vậy sẽ ổn.
Bennett McElwee

9
Hôm nay đã xảy ra rằng trên một máy IE8 & apos; không được phân tích cú pháp, vì vậy người dùng nhìn thấy mã. Thay thế bằng & # 39; Đã giải quyết vấn đề.
Michele Gargiulo

9
& thủy; KHÔNG thay thế cho & apos; như một người độc thân và người kia là một đôi.
RichardTheKiwi

FYI: HTML5 hỗ trợ cả hai thực thể
Tarol


29

" có giá trị trong cả HTML5 và HTML4.

'là hợp lệ trong HTML5 , nhưng không phải HTML4 . Tuy nhiên, hầu hết các trình duyệt đều hỗ trợ 'HTML4.


10
Lưu ý rằng IE 8 không hỗ trợ '.
Paul D. Chờ

17

Nếu bạn cần viết đánh dấu chính xác về mặt ngữ nghĩa, ngay cả trong HTML5, bạn không được sử dụng 'để thoát các dấu ngoặc đơn. Mặc dù, tôi có thể tưởng tượng bạn thực sự có nghĩa là dấu nháy đơn hơn là trích dẫn đơn.

dấu ngoặc đơndấu nháy đơn không giống nhau, về mặt ngữ nghĩa, mặc dù chúng có thể trông giống nhau.

Đây là một dấu nháy đơn.

Sử dụng 'để chèn nó nếu bạn cần hỗ trợ HTML4. (đã chỉnh sửa)

Trong tiếng Anh Anh, các trích dẫn đơn được sử dụng như thế này:

"Anh ấy bảo tôi 'hãy thử xem", tôi nói.

Báo giá đi theo cặp. Bạn có thể dùng:

<p><q>He told me to <q>give it a try</q></q>, I said.<p>

để có các trích dẫn lồng nhau theo một cách chính xác về mặt ngữ nghĩa, trì hoãn việc thay thế các ký tự thực tế cho công cụ kết xuất. Sự thay thế này sau đó có thể bị ảnh hưởng bởi các quy tắc CSS , như:

q {
  quotes: '"' '"' '<' '>';
} 

Một bài viết cũ nhưng dường như vẫn còn có liên quan về đánh dấu chính xác về mặt ngữ nghĩa: Rắc rối với EM 'n EN (và các nhân vật mờ ám khác) .

(chỉnh sửa) Điều này từng là:

Sử dụng 'để chèn nó nếu bạn cần hỗ trợ HTML4.

Nhưng, như @James_pic đã chỉ ra, đó không phải là trích dẫn đơn, mà là "Trích dẫn cong đơn, phải".


Câu hỏi rõ ràng là về việc sử dụng dấu nháy đơn và không trích dẫn. Tại sao bạn sẽ đăng bài này?
Alex Skrypnyk

9
Tôi thấy rõ ràng trích dẫn duy nhất trong tiêu đề. Câu hỏi là tại sao thoát chúng không nên được thực hiện với & apos; . Tôi đã trả lời điều này vì sự hỗ trợ cho & apos; không phải là mối quan tâm duy nhất.
R. Schreurs

3
Trích dẫn duy nhất được sử dụng theo cách đó trong tiếng Anh Mỹ, cũng.
Rob_vH

Đây phải là câu trả lời được chấp nhận vì nó làm rõ rằng dấu nháy đơn và dấu ngoặc đơn không giống nhau và đó là lý do tại sao bạn không nên sử dụng dấu nháy đơn để kèm theo giá trị thuộc tính HTML.
delroh

Trong Unicode, ký tự dấu nháy đơn (& # 39;) được phân loại là dấu ngoặc kép và là dạng duy nhất của dấu ngoặc kép "thẳng" trong thông số kỹ thuật. Lời khuyên sử dụng & # 8217; tốt nhất là không đầy đủ, bởi vì đó là ký tự cho "Trích dẫn cong đơn, phải". Nếu bạn thực sự đang đi cho tính chính xác về ngữ nghĩa, thì nó nên được sử dụng cho dấu ngoặc kép bên phải, trong khi & # 8216; ("Trích dẫn cong đơn, trái") nên được sử dụng cho dấu ngoặc kép bên trái.
James_pic

2

Nếu bạn thực sự cần dấu ngoặc đơn, dấu nháy đơn, bạn có thể sử dụng

html    | numeric | hex
&lsquo; | &#145;  | &#x91; // for the left/beginning single-quote and
&rsquo; | &#146;  | &#x92; // for the right/ending single-quote

-2

Trong trường hợp của tôi, đó là lỗi khi tôi cố gắng sử dụng trích dẫn trong văn bản Time's up!. Có cảnh báo từ Eslint.

Để sửa nó tôi thay thế bằng Time&apos;s up!. Kết quả như mong đợi

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.