В настоящее время я добавляю подробные всплывающие подсказки на наш сайт и хотел бы (не прибегая к надстройке jQuery, я знаю, что их много!) Использовать возврат каретки для форматирования всплывающей подсказки.
Чтобы добавить подсказку, я использую атрибут title. Я просмотрел обычные сайты и использовал базовый шаблон:
<a title='Tool?Tip?On?New?Line'>link with tip</a>
Я пробовал заменить ? на:
<br />&013; / \r\nEnvironment.NewLine (я использую C#)Ничего из вышеперечисленного не работает. Является ли это возможным?






Попробуйте символ 10. Однако он не будет работать в Firefox. :(
The text is displayed (if at all) in a browser dependent manner. Small tooltips work on most browsers. Long tooltips and line breaking work in IE and Safari (use
or for a new newline). Firefox and Opera do not support newlines. Firefox does not support long tooltips.
http://modp.com/wiki/htmltitletooltips
По состоянию на январь 2015 года Firefox поддерживает использование для вставки разрыва строки в HTML-атрибут title. См. Пример фрагмента ниже.
<a href = "#" title = "Line 1 Line 2 Line 3">Hover for multi-line title</a>+1. Если вы решите использовать подключаемый модуль jQuery, для оптимальной доступности он должен считывать его содержимое из атрибута title и заменять произвольный невидимый символ на разрыв строки во время выполнения.
+1. Интересный материал. По-прежнему существует проблема, когда некоторые UA обрезают заголовок, когда он появляется - FF2, насколько я помню, но в наши дни это не такая уж проблема.
По состоянию на январь 2015 года Firefox поддерживает использование в атрибуте title для вставки разрыва строки.
Мне не удалось заставить работать разрывы строк в IE11 в элементе SVG <title>. Кто-нибудь добился большего успеха в этом? Пробовал указанные выше / ниже коды символов, похоже, ни один из них не работает.
будет работать во всех основных браузерах (включая IE)
Этот ответ устарел; & # 13; также работает в Chrome и других браузерах.
Я не верю, что это так. Firefox 2 в любом случае обрезает длинные заголовки ссылок, и их действительно следует использовать только для передачи небольшого количества справочного текста. Если вам нужно больше текста объяснения, я бы посоветовал поместить его в абзац, связанный со ссылкой. Затем вы можете добавить javascript-код всплывающей подсказки, чтобы скрыть эти абзацы и показать их как всплывающие подсказки при наведении курсора. Это лучший способ заставить его работать в кросс-браузере IMO.
Это так просто, что вы себя накинете: просто нажмите Enter!
<a href = "#" title='Tool
Tip
On
New
Line'>link with tip</a>@Halcyon, просто чтобы прояснить для других читателей, приведенные выше три кода, похоже, не являются HTML. Они больше похожи на escape-последовательности, производные от языка C.
@Sam Я не понимаю, что вы имеете в виду. \x0A (байт) - это код символа, который соответствует новой строке. То же самое для \u000A (юникод). \n также является новой строкой.
@Halcyon, я попытался вставить эти escape-последовательности в атрибут title в Firefox и Chrome, и они были буквально представлены во всплывающей подсказке. Впоследствии я понял, что вы, вероятно, использовали этот синтаксис как способ сообщить, какие символы (а не escape-последовательности) следует использовать. Мой комментарий предназначен для экономии времени других людей, предупреждая их не пытаться помещать ваши escape-последовательности в свой HTML, чтобы они не тратили время, как это сделал я.
В Chrome (42) текст под первой строкой имеет другой (и для меня) менее читаемый шрифт.
Не уверен, относятся ли они к приведенным выше комментариям, но я обнаружил, что хотя \ n и \ r действительно работают, если задействован PHP, они будут работать только в строках, представленных внутри "", а не внутри "".
@Tarquin Они не работают в HTML, они просто работают специально с двойными кавычками PHP, потому что это особенность двойных кавычек PHP.
Итак, согласны ли мы, что нет возможности реализовать в html, кроме физического разделения новой строки в строке?
прогресс в отношении совместимости браузера Firefox? (Я не могу это проверить прямо сейчас)
Просто люблю, когда решение такое простое :) Спасибо!
последняя спецификация разрешает символ перевода строки, поэтому простой разрыв строки внутри атрибута или объекта (обратите внимание, что требуются символы # и ;).
он не поддерживается Chrome, но для Firefox это нормально!
Я пробовал и , и . не учитывает предполагаемые «разрывы строк» в версии Chrome 50.0.2661.94 (64-бит). хорошо работает в текущих версиях Chrome, Firefox и Opera (все для 64-битной Ubuntu) и Internet Explorer версии 11.0 с некоторыми изменениями в Windows.
Это особенно полезно для меня, потому что я пытался сделать это в редакторе сообщений Wordpress.
& # 10; прекрасно работает в IE, Firefox и Chrome. Спасибо!
Для Chrome & # 013; ....... Пример: title = "title1 & # 13; title2 & # 13; title3"

 <----- Это текст, необходимый для вставки переноса возврата.
Из доступной информации о доступности и использования всплывающих подсказок, увеличивающих их размер с помощью CR или разрыва строки, можно принять во внимание тот факт, что различные браузеры не могут / не согласны по основам, показывает, что они не очень заботятся о доступности.
Для очень простого решения для кроссбраузерных настраиваемых всплывающих подсказок см. kollermedia.at/archive/2008/03/24/easy-css-tooltip/…
@Dave Это хорошая ссылка, однако разрыв строки в демонстрации происходит из-за атрибута ширины
Согласно этому статья на сайте w3c:
CDATA is a sequence of characters from the document character set and may include character entities. User agents should interpret attribute values as follows:
- Replace character entities with characters,
- Ignore line feeds,
- Replace each carriage return or tab with a single space.
Это означает, что (по крайней мере) CR и LF не будут работать внутри атрибута title. Я предлагаю вам использовать плагин всплывающей подсказки. Большинство этих плагинов позволяют отображать произвольный HTML-код в виде всплывающей подсказки к элементу.
Да, я знаю, что это неофициально. Вы ошибаетесь, однако. Это не значит, что они не будут отображаться. Это означает, что в спецификации W3C не указано, как они должны отображаться ... Суть поста заключалась не в том, чтобы предположить, что их можно использовать для замены более функциональных плагинов ... это был скорее случай того, чтобы во время деградации можно было использовать что-то еще.
@ip: Я ошибаюсь в том, что обновленные рекомендации w3c предложить о том, что браузеры разделяют контент вокруг символа LF. Однако в конечном итоге браузеры будут реализовывать это поведение.
В Chrome 16 и, возможно, более ранних версиях вы можете использовать «\ n». Кстати, "\ t" тоже работает
Начиная с Firefox 12, они теперь поддерживают разрывы строк с помощью HTML-объекта перевода строки: .
<span title = "First line Second line">Test</span>
Это работает в IE и является правильным согласно спецификации HTML5 для атрибут заголовка.
Если вы используете jQuery:
$(td).attr("title", "One \n Two \n Three");
будет работать.
проверено в IE-9: работает.
Работает в MVC 3. Пример: @ Html.DropDownList ("RegId", null, "Select Region", new {title = "Выберите регион из раскрывающегося меню, \ nкоторый требуется для получения списка действительных имен контрактов") , @class = "form-control", onchange = "getContractNames (this)", style = "width: 200px;"})
Также стоит упомянуть, если вы устанавливаете атрибут title с помощью Javascript следующим образом:
divElement.setAttribute("title", "Line one Line two");
Это не сработает. Вы должны заменить десятичный ASCII 10 на шестнадцатеричный ASCII A так, как он был экранирован с помощью Javascript. Как это:
divElement.setAttribute("title", "Line one\x0ALine two");
@MaxNanasy Согласен, и они эквивалентны (\n в любом случае означает код символа 10)
Проверено в IE, Chrome, Safari, Firefox (последние версии 27.11.2012):
Работает во всех ...
Первый способ (разрыв строк в коде) кажется более простым, но не подходит для программ автоформатирования js-кода.
@Camilo Martin, новая строка и перевод строки одинаковы на разных платформах. - это перевод строки в unix, как и в Windows. Точно так же - это новая линия для обеих платформ. спецификация определяет символ перевода строки (LF), который, конечно же, является на обеих (всех?) Платформах.
@matty Не уверен, что я вас понимаю - правильнее всего использовать unix LF (который является своего рода стандартным переводом строки для протоколов и инструментов), CR использовался только старыми Mac (и другими малоизвестными платформами) и кажется неуместным.
Прошу прощения за непонятный выбор слов. То, что я назвал переводом строки (# 10), на самом деле является переводом строки, хотя его часто называют LF. То, что я назвал новой строкой (№13), на самом деле является возвратом каретки. В любом случае, я хотел сказать, что эти значения одинаковы для всех платформ. Тот факт, что windows (с использованием обоих этих символов в конце строки) и mac (с использованием «неправильного» символа для завершения строки) не имеет значения в отношении того, какой объект HTML должен использоваться в атрибуте title. В спецификации написано , хотя очевидно, что также работает во многих случаях.
Если кому-то еще нужно напомнить об этих кодах символов, как это сделал я, см. [Этот поток] (stackoverflow.com/q/1761051/1298086).
простой & # 13; не работает для хрома в Linux. Последовательность & # 13; & # 10; однако делает.
Не повезло с IE11 с & # 13;
Просто используйте это:
<a title='Tool
Tip
On
New
Line'>link with tip</a>
Вы можете добавить новую строку в заголовок с помощью этого 
.
Я знаю, что опаздываю на вечеринку, но для тех, кто просто хочет увидеть, как это работает, вот демонстрация: http://jsfiddle.net/rzea/vsp6840b/3/
Используемый HTML:
<a href = "#" title = "First Line
Second Line">Multiline Tooltip</a>
<br>
<br>
<a href = "#" title = "List:
• List item here
• Another list item here
• Aaaand another list item, lol">Unordered list tooltip</a>
Самый последний ответ, отлично работает в Firefox. Спасибо.
Просто используйте JavaScript. Затем совместим с большинством старых браузеров. Используйте escape-последовательность \ n для перевода строки.
document.getElementById("ElementID").title = 'First Line text \n Second line text'
Какая версия Chrome? У меня это работает, и я использую Chrome.
На самом деле я использую последнюю версию Chrome, однако, поскольку я работал над SVG Elements, это не сработало, это нормально.
Что касается тех, у кого не работал, вам нужно стилизовать элемент, на котором видны строки, как: white-space: pre-line;
Ссылка из этого ответа: https://stackoverflow.com/a/17172412/1460591
К чему нужно применить этот стиль? Название? как a[title]?
У нас было требование, по которому нам нужно было все это протестировать, вот чем я хочу поделиться.
document.getElementById("tooltip").setAttribute("title", "Tool\x0ATip\x0AOn\x0ANew\x0ALine")<p title='Tool
Tip
On
New
Line'>Tooltip with <pre>
new
line</pre> Works in all browsers</p>
<hr/>
<p title = "Tool Tip On New Line">Tooltip with <code>&#13;</code> Not works Firefox browsers</p>
<hr/>
<p title='Tool Tip On New Line'>Tooltip with <code>&#10;</code> Works in some browsers</p>
<hr/>
<p title='Tool
Tip
On
New
Line'>Tooltip with <code>&#xD;</code> May work in some browsers</p>
<hr/>
<p id='tooltip'>Tooltip with <code>document.getElementById("tooltip").setAttribute("title", "Tool\x0ATip\x0AOn\x0ANew\x0ALine")</code> May work in some browsers</p>
<hr/>
<p title = "List:
• List item here
• Another list item here
• Aaaand another list item, lol">Tooltip with <code>• </code>Unordered list tooltip</p>
<hr/>
<p title='Tool\nTip\nOn\nNew\nLine'>Tooltip with <code>\n</code> May not work in modern browsers</p>
<hr/>
<p title='Tool\tTip\tOn\tNew\tLine'>Tooltip with <code>\t</code> May not work in modern browsers</p>
<hr/>
<p title='Tool
Tip
On
New
Line'>Tooltip with <code>&#013;</code> Works in most browsers</p>
<hr/>взломать, но работает - (проверено на хроме и мобильных устройствах)
просто добавьте пробелы без перерыва , пока он не сломается - вам, возможно, придется ограничить размер всплывающей подсказки в зависимости от количества контента, но для небольших текстовых сообщений это работает:
etc
Пробовал все, что описано выше, и это единственное, что у меня сработало -
Синтаксис Razor
В случае ASP.NET MVC вы можете просто сохранить заголовок как переменную, используя \r\n, и он будет работать.
@{
var logTooltip = "Sunday\r\nMonday\r\netc.";
}
<h3 title = "@logTooltip">Logs</h3>
Этот 
 должен работать, если вы просто используете простой атрибут заголовка.
во всплывающих окнах начальной загрузки просто используйте data-html = "true" и используйте html в атрибуте data-content.
<div title = "Hello 
World">hover here</div>Более красивые всплывающие подсказки могут быть созданы вручную и могут включать форматирование HTML.
<!DOCTYPE html>
<html>
<style>
.tooltip {
position: relative;
display: inline-block;
border-bottom: 1px dotted black;
}
.tooltip .tooltiptext {
visibility: hidden;
width: 120px;
background-color: #555;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px 0;
position: absolute;
z-index: 1;
bottom: 125%;
left: 50%;
margin-left: -60px;
opacity: 0;
transition: opacity 0.3s;
}
.tooltip .tooltiptext::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: #555 transparent transparent transparent;
}
.tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
}
</style>
<body style = "text-align:center;">
<h2>Tooltip</h2>
<p>Move the mouse <a href = "#" title = "some text
more and then some">over</a> the text below:</p>
<div class = "tooltip">Hover over me
<span class = "tooltiptext">Tooltip text
some <b>more</b><br/>
<i>and</i> more</span>
</div>
<div class = "tooltip">Each tooltip is independent
<span class = "tooltiptext">Other tooltip text
some more<br/>
and more</span>
</div>
</body>
</html>
Это взято из сообщение w3schools по этому поводу. Поэкспериментируйте с приведенным выше кодом здесь.
используйте data-html = "true" и примените <br>.
Это не входит в спецификацию. Должен быть какой-то случайный плагин всплывающей подсказки
Я пробовал с " "для отображения текста заголовка в новой строке, и это работает как шарм
В Chrome 79 больше не работает.
Мне удалось:
Это работает во всех основных браузерах.
Я использую firefox 68.7.0esr, и 
 не работает. Прерывание строк с помощью <CR> действительно сработало, поэтому я буду придерживаться этого, поскольку он прост и прямолинеен.
т.е.
<option title = "Constraint PSC/SCS/Activity
Definition Constraint Checker
Database Start Notifier">CnCk
Решение «просто нажмите Enter» здесь не сработало, поэтому старый добрый vanilla js кажется довольно эффективным и чистым способом.
function customTitle(event, textHeader, text){
let eventOrigin = event.target || event.srcElement;
eventOrigin.title = textHeader + '\n\n' + text;
}
И на элементе onmouseover
onmouseover = "customTitle(event, 'Some Caput', 'Some more or less complete description');"
Вуаля! Работает на chrome и firefox (что не исключает других, просто не проверял).
Это довольно сложно, но может быть обходной путь. Замените все пробелы в заголовке на неразрывные
. Затем поместите пробелы там, где вы хотите, чтобы строки разрывались. Вам также может потребоваться добавить кучу символов перед пробелом (разрыв строки).