`& mdash;` hoặc `& # 8212;` có sự khác biệt nào trong đầu ra HTML không?


79

— hoặc là —

Có sự khác biệt giữa chúng? Cái này có được hỗ trợ tốt hơn cái kia không?


7
Chỉ cần cho đầy đủ: dấu gạch ngang dài thực tế ( "mdash") nhân vật là: - và nên càng rộng như nhân vật "m"
Simon B.

6
vâng, một M vốn
Ray Tayek

Câu trả lời:


85

Bộ phân tích cú pháp SGML (hoặc bộ phân tích cú pháp XML trong trường hợp của XHTML) có thể xử lý —mà không cần phải xử lý DTD (điều này không quan trọng đối với các trình duyệt vì chúng chỉ slurp tag soup), đồng thời —con người dễ đọc và viết mã nguồn hơn.

Về mặt cá nhân, tôi sẽ tuân theo một dấu gạch ngang nghĩa đen và đảm bảo rằng cài đặt mã hóa ký tự của tôi nhất quán.


13

Chúng giống hệt nhau. Xem: http://en.wikipedia.org/wiki/Dash

Chặn các lỗi trình duyệt, chúng sẽ hiển thị giống nhau trong mọi trường hợp, vì vậy sự khác biệt duy nhất sẽ liên quan đến khả năng đọc mã, điều này sẽ chỉ ra —.

Hoặc, nếu bạn đang sử dụng UTF-8 làm bộ ký tự trong tài liệu HTML của mình, bạn có thể nhập ký tự trực tiếp. Điều đó cũng sẽ hiển thị chính xác như vậy.


5
Lưu ý rằng điều này chỉ đúng với HTML, trong XML, &8212;luôn hoạt động trong khi —phụ thuộc vào việc khai báo thực thể.
Flimm

10

—:: —::\u2014

Khi biểu diễn m-dash trong chuỗi văn bản JavaScript để xuất ra HTML, hãy lưu ý rằng nó sẽ được biểu thị bằng giá trị unicode của nó. Có những trường hợp khi dấu và ký tự ('&') sẽ không được giải quyết — đặc biệt là một số ngữ cảnh nhất định trong JSX. Trong trường hợp này, không —và cũng không —hoạt động. Thay vào đó bạn cần phải sử dụng dãy thoát Unicode: \u2014.

Ví dụ: khi triển khai một render()phương pháp để xuất văn bản từ một biến JavaScript:

render() {
   let text='JSX transcoders will preserve the & character—to ' 
            + 'protect from possible script hacking and cross-site hacks.'
   return (
     <div>{text}</div>
   )
}

Điều này sẽ xuất ra:

<div>JSX transcoders will preserve the & character&mdash;to protect from possible script hacking and cross-site hacks.</div>

Thay vì &- đại diện có tiền tố, bạn nên sử dụng \ u2014:

let text='JSX transcoders will preserve the & character\u2014to …'

1
Hoạt động tốt với React.
Màu xanh lá cây

2

Từ trang web W3 Các thực thể HTML phổ biến được sử dụng cho kiểu chữ

Vì lợi ích của tính di động, các tham chiếu thực thể Unicode nên được dành riêng để sử dụng trong các tài liệu nhất định được viết bằng bộ ký tự UTF-8 hoặc UTF-16. Trong tất cả các trường hợp khác, các tham chiếu chữ và số nên được sử dụng.

Dịch: Nếu bạn đang tìm kiếm sự hỗ trợ rộng rãi nhất, hãy đi với &mdash;


1

Có thể là việc sử dụng mã số phổ biến hơn, vì nó là tham chiếu trực tiếp đến một ký tự trong bảng thực thể html, nhưng tôi đoán cả hai đều hoạt động ở mọi nơi. Ký hiệu đầu tiên dễ nhớ hơn đối với rất nhiều ký tự.

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.