在JavaScript提示框中格式化文本

39

我该如何在JavaScript的提示框中格式化文本?我需要让文本中的某个单词带有下划线。

7个回答

42

你只能使用:

\b = Backspace 
\f = Form feed 
\n = New line 
\r = Carriage return 
\t = tab
\000 = octal character 
\x00 = hexadecimal character 
\u0000 = hexadecimal unicode character

所以,您可以插入不同的ASCII字符,但不能对它们进行格式化(如斜体加粗)。 编辑 我还必须提到,实际上alert的作用类似于toString转换,因此包括标签和/或样式是不可能的。

您可以使用Unicode字符'\u0332'来加下划线; alert('h̲e̲l̲l̲o̲');(虽然可能不会呈现为实线) - Paul S.
@PaulS。是的,但它无论如何都不会被下划线。 - vladkras
1
可以使用这些十六进制数字做一些有趣的事情。 - brasofilo
谢谢,但我很好奇你希望在alert中使用\fFormFeed会产生什么效果? - ashleedawg

9

使用Unicode字符'\u0332'来给字符串添加下划线,这种字符被称为连写下划线

function underline(s) {
    var arr = s.split('');
    s = arr.join('\u0332');
    if (s) s = s + '\u0332';
    return s;
}

var str = underline('hello world'); // "h̲e̲l̲l̲o̲ ̲w̲o̲r̲l̲d̲"

alert(str);

这种方法不能保证生成光滑的下划线。
Firefox 59上使用confirm()的示例: firefox confirm u0332

我需要这个用于提示框来在“是”中下划线Y。Y\u0332es。谢谢。我刚刚测试了var str = underline(underline('hello world'));,如果有人想要双下划线,它会使下划线加倍。你也可以像这样给它3个等:var str = underline(underline(underline('hello world'))); - Ste

4

2
在我的情况下,我通过JavaScript文件创建了国际化。我需要每个按钮上都有一个助记符,因此我在寻找简单的解决方案。实际上,我有一个简单的方法来获得想要的结果: \u0332是Unicode字符 COMBINING LOW LINE 使用这个字符,你可以为单个字母加下划线。
演示:

alert('S\u0332earch - s underlined');

i18n = {};

i18n.SEARCH = "S\u0332earch - s underlined";

document.getElementById('search').innerHTML = i18n.SEARCH;
<button id="search"></button>


2
更新:浏览器已经开始在其本地对话框中禁用Unicode支持,所以这条路已经走不通了。
如两个答案所建议的,解决方案是使用Unicode,但你必须正确地做这个!我也想要一个更可重用的解决方案,不需要每次都重新发明轮子。因此,我为了方便起见,想出了这个小的JavaScript函数

alert('Really need to alert some '+toUnicodeVariant('underlined', 'bold sans', 'underline')+' text');
<script src="https://rawgithub.com/davidkonrad/toUnicodeVariant/master/toUnicodeVariant.js"></script>

应该在所有主要浏览器中产生类似这样的结果(尝试运行上面的代码片段):

enter image description here


我在Windows上的Chrome 91中得到了一串下划线方框的字符串。 - isherwood

1

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接