我目前正在为我们的网站添加冗长的工具提示,我想(不必求助于一个神奇的jQuery插件,我知道有很多!)使用回车来格式化工具提示。

为了添加提示,我使用了title属性。我环顾了一下常用的网站,并使用了基本的模板:

<a title='Tool?Tip?On?New?Line'>link with tip</a>

我试过更换?:

< br / > &013;/ & # 13; \ r \ n 环境。换行符(我使用c#)

以上方法都行不通。这可能吗?


试试第10个字符。直到2015年1月,它还不能在Firefox中运行。

文本(如果有的话)显示在 依赖浏览器的方式。小 工具提示适用于大多数浏览器。长 IE中的工具提示和换行 和Safari(使用&#10;或& # 13;对于一个 新换行符)。Firefox和Opera则不然 支持换行。Firefox则没有 支持长工具提示。

http://modp.com/wiki/htmltitletooltips

Firefox现在支持使用&#13;在HTML标题属性中插入换行符。请参阅下面的代码片段示例。

<a href="#" title="第1行&#13;第2行&#13;第3行">悬停多行标题</a>


& # 13;可在所有主流浏览器(包括IE)上运行


我不这么认为。火狐2删减了长链接标题,它们应该只用于传达少量的帮助文本。如果你需要更多的解释文本,我会建议它属于一个与链接相关的段落。然后,您可以添加工具提示JavaScript代码来隐藏这些段落,并在悬停时将它们作为工具提示显示。在我看来,这是让它跨浏览器工作的最佳选择。


这很简单:只需按下Enter!

<a href="#" title='工具 提示 在 新 Line'>link with tip</a>


最新的规范允许换行字符,因此在属性或实体&#10中使用简单的换行符;(注意字符#和;是必需的)都可以。


& # xD;<-----这是插入回车符所需的文本。


根据W3C网站上的这篇文章:

CDATA是来自文档字符集和的字符序列 可能包括字符实体。用户代理应该解释属性 取值如下: 用字符替换字符实体, 忽略换行, 用一个空格替换每个回车或制表符。

这意味着(至少)CR和LF在title属性中不起作用。我建议你使用工具提示插件。大多数插件都允许将任意HTML显示为元素的工具提示。


在Chrome 16或更早的版本中,你可以使用“\n”。顺便说一句,“\t”也可以。


从Firefox 12开始,他们现在支持使用换行HTML实体的换行:&#10;

<span title="First line&#10;Second line">Test</span>

这在IE中工作,并且根据HTML5的title属性规范是正确的。


如果你正在使用jQuery:

$(td).attr("title", "One \n Two \n Three");

将工作。

它在Internet Explorer 9上进行了测试:工作正常。


值得一提的是,如果你用JavaScript设置title属性,如下所示:

divElement。setAttribute("title", "第一行&#10;第二行");

这是行不通的。你必须将ASCII十进制10替换为ASCII十六进制a按照JavaScript转义的方式。是这样的:

divElement。setAttribute("title", "Line one\x0ALine two");


在IE, Chrome, Safari, Firefox(最新版本2012-11-27)中测试: & # 13;

它们都适用……


就用这个吧:

<a title='Tool&#x0aTip&#x0aOn&#x0aNew&#x0aLine'>link with tip</a>

您可以使用&#x0a在标题上添加新行。


这里是一个演示:http://jsfiddle.net/rzea/vsp6840b/3/

HTML使用:

<a href="#" title="First Line&#013;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>

只需使用JavaScript。然后它与大多数和较老的浏览器兼容。

换行使用转义序列\n。

document.getElementById("ElementID").title = 'First Line text \n Second line text'

至于谁&#10;没有工作,你必须样式的元素上的行可见如下:

它引用自GuitarWorker对在工具提示中添加换行符的回答。


作为对&#013;解决方案,我们也可以使用&#009标签,如果你需要做这样的事情。

<按钮标题= "我的待办事项清单:& # 013;& # 009;项目2 & # 013;& # 009;项目3 & # 013;& # 009;项目4 & # 013;& # 009;& # 009;子项1”> > < /按钮测试

Demo


我们有一个需求,我们需要测试所有这些,下面是我想分享的:

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&#13;Tip&#13;On&#13;New&#13;Line">Tooltip with <code>&amp;#13;</code> Not works Firefox browsers</p> <hr/> <p title='Tool&#10;Tip&#10;On&#10;New&#10;Line'>Tooltip with <code>&amp;#10;</code> Works in some browsers</p> <hr/> <p title='Tool&#x0aTip&#x0aOn&#x0aNew&#x0aLine'>Tooltip with <code>&amp;#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&#013;Tip&#013;On&#013;New&#013;Line'>Tooltip with <code>&amp;#013;</code> Works in most browsers</p> <hr/>

小提琴


这是一个黑客,但它的工作-(在谷歌Chrome和移动测试)

只需要添加不间断空格,直到它中断-你可能需要根据内容的数量限制工具提示的大小,但对于小文本消息,这是有效的:

&nbsp;&nbsp; etc

我尝试了上面的所有方法,这是唯一对我有效的方法。


剃须刀的语法

在ASP的情况下。NET MVC,你可以把标题存储为变量,作为\r\n,就可以了。

@{
    var logTooltip = "Sunday\r\nMonday\r\netc.";
}

<h3 title="@logTooltip">Logs</h3>

& # 013;如果只使用简单的title属性,应该可以工作。

在Bootstrap弹窗中,只需使用data-html="true"并在data-content属性中使用HTML。

<div title=“Hello World”>悬停在这里</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&#13;&#10;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>。


我试过&#10;在新的一行显示标题文本,它的工作就像一个魅力。


在Chrome 79, &#13;已经不管用了。

我成功地做到了:

& # 13; & # 10;

这适用于所有主流浏览器。


我使用的是火狐68.7.0 ESR和&#013;是行不通的。通过<CR>断行确实有用,所以我使用它,因为它简单而向前。

也就是说,

<option title="Constraint PSC/SCS/Activity
Definition Constraint Checker
Database Start Notifier">CnCk

“只需按下enter”的解决方案在这里不起作用,所以优秀的老香草JavaScript似乎是一种相当高效和干净的方法。

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(不排除其他;我只是没有检查)。


如果你试图在一个React项目中这样做,你将以下面的格式呈现:

title={`First line of text ${varOne} &#13; Second line of text ${varTwo} &#13; Third line of text ${varThree}`}

那么&#13;,&#10;类似的解决方案并不奏效。它们实际上会呈现为文本。

相反,根据需要实际创建文本是更好的选择。为了更好地理解,举个例子:

title={`First line of text ${varOne}
Second line of text ${varTwo}
Third line of text ${varThree}`}

确保在“第二行文本”和“第三行文本”之前删除制表符/空格缩进。否则他们也会渲染。

它在谷歌Chrome 96和Firefox 95.0b12(开发者版,因为,为什么不呢)上进行了测试。它应该也适用于大多数现代浏览器。


有多种方法可以做到这一点。&#13或&#010;取决于浏览器。但下面的例子适用于我的谷歌Chrome和Firefox。

<a href="javascript:;" title="工具提示第一行&#10;工具提示第二行&#10;工具提示第三行">工具提示</a> .


在寻找在引导工具提示中显示断线的解决方案时,我被引导到此页面。当data-toggle="tooltip"被添加到HTML标签中时,引导工具提示将显示出来。

最后,我发现一个data-html="true"应该被添加到标签中,这样做你的标题内的HTML将被呈现。然后使用<br>来breakline。检查下面的示例:

之前(未显示任何折线):

<i class="bi bi-x-circle" data-toggle="tooltip" data-placement="top" title="test1 <br> test2"></i>

After(显示折线):

<i class="bi bi-x-circle" data-toggle="tooltip" data-html="true" data-placement="top" title="test1 <br> test2"></i>

- Laravel和Blade程序员的提示:你可以用nl2br("string")函数将\n转换为<br>。

-以上解决方案已在谷歌Chrome 98中测试。


使用\x0A让我在鼠标悬停时在标题/工具提示中获得换行符。

文件名:news.php

<span onmouseover="getInfo(this,'06-APR-22')" data-html="true">Day</span>

文件名:news.php

<script>
function getInfo(x, dateVal) {       
      var html = $.ajax({
            type: "POST",
            url: "report/get-info.php",
            data: {             
                'dateVal': dateVal,
            },              
            success: function(response) {
                x.setAttribute('title', response );
            }
        });
}
</script>

文件名:get-info.php

<?php
$tmp  = $_POST['dateVal'];   
$dateVal = date("m/d/Y", strtotime($tmp));

$querySelectCode = "SELECT INFO_ID, INFO_NAME FROM INFORMATION
                    WHERE TRUNC(DP.DATE_TIME) = TO_DATE('$dateVal','MM/DD/YYYY') ";    
$stmtSelectcode = oci_parse($dbConn, $querySelectCode);
if ( ! oci_execute($stmtSelectcode) ){
    $err = oci_error($stmtSelectcode);
    trigger_error('Query failed: ' . $err['message'], E_USER_ERROR);
}
$INFO_ID = array();
while(oci_fetch($stmtSelectcode)){
    $INFO_ID[]   =  oci_result($stmtSelectcode, 'INFO_ID');
    $INFO_NAME[]     =  oci_result($stmtSelectcode, 'INFO_NAME');        
}
for($index=0 ; $index < count($INFO_ID) ; $index++)
{
    echo   $INFO_NAME[$index ] . "\x0A" ;        
}
?>

只是分享我看到的小bug:

在Chrome 103中使用以下html:

<!DOCTYPE html > < html > <身体> <select title="Line 1:&#13;&#13;Line 2"> 测试<选项值= " 0 " > < /选项> < /选择> < /身体> < / html >

我看到了这个:

在截图上-“第一行:”文本后的两个奇怪的字符,第一行。

修复: (我不知道哪个是正确的/有效的,但它们都可以作为修复(在Chrome 103中))

在第一行之后添加空格(字符):在第一个&#13之前;修复它 先改变&#13;& # 10;全行标题="第一行:&#10;&#13;第2行" 添加,在第一行之后:在第一个&#13; 也在改变&#13;“回车符号”将修复它