`& mdash;` або `& # 8212;` чи є різниця у виведенні HTML?


79

— або —

Чи є різниця між ними? Чи підтримується один краще, ніж інший?


7
Тільки для повноти: фактичний довгий тире ("mdash"): - і повинен бути таким же широким, як символ "m"
Саймон Б.

6
так, велика
буква

Відповіді:


85

Синтаксичні аналізатори SGML (або XML-синтаксичні аналізатори у випадку XHTML) можуть обробляти —без необхідності обробляти DTD (що не має значення для браузерів, оскільки вони просто шматують суп із тегів), тоді —як людям легше читати та писати у вихідному коді.

Особисто я дотримувався буквального тире та гарантував, що мої налаштування кодування символів були узгодженими.


13

Вони абсолютно однакові персонажі. Див .: http://en.wikipedia.org/wiki/Dash

За винятком помилок браузера вони відображатимуться однаково у всіх випадках, тому єдина різниця полягатиме в читабельності коду, на що вказуватиме —.

Або, якщо ви використовуєте UTF-8 як набір символів у своєму документі HTML, ви можете ввести символ безпосередньо. Це також відображатиме те саме.


5
Зверніть увагу, що це справедливо лише для HTML, в XML, &8212;завжди працює, тоді як це —залежить від того, де оголошено сутність.
Флімм

10

—:: —::\u2014

Представляючи m-тире в текстовому рядку JavaScript для виводу в HTML, зверніть увагу, що він буде представлений своїм значенням Unicode. Бувають випадки, коли символи амперсанда ('&') не можуть бути вирішені - особливо певний контекст в JSX. У цьому випадку ні, ні —не —буде працювати. Замість цього вам потрібно використовувати керуючу послідовність Unicode: \u2014.

Наприклад, при реалізації render()методу виведення тексту із змінної JavaScript:

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

Це виведе:

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

Замість &- префіксного подання вам слід використовувати \ u2014:

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

1
Чудово працює з React.
Грін

2

З веб-сайту W3 Загальні сутності HTML, що використовуються для типографіки

З метою переносимості посилання на сутності Unicode слід зарезервувати для використання в документах, які мають бути записані в наборах символів UTF-8 або UTF-16. У всіх інших випадках слід використовувати буквено-цифрові посилання.

Переклад: Якщо ви шукаєте найширшу підтримку, спробуйте &mdash;


1

Можливо, використання цифрового коду є більш універсальним, оскільки це пряме посилання на символ у таблиці сутностей html, але я думаю, вони обидва працюють скрізь. Першу нотацію просто набагато легше запам’ятати для багатьох персонажів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.