\ n换行符不适用于Javascript

时间:2009-11-06 14:51:36

标签: javascript

我需要在不同的行中放置不同的信息,我有一个工作的Javascript库,但我不能强制文本输出显示换行符。以下是Javascript的相关部分:

var information = layer.objectAdd({
            type:"tooltip", 
            clickable: true,
            Title: "My title", 
            Description: "My description1 \nMy description2"});

这是所需的输出:

My description1
My description2

这就是我得到的:

My description1 My description2

为什么这样,我的意思是还有另一种跳转到换行符的方法吗?

对不起,如果我想错了某人,我有一个用于生成工具提示的Javascript库。我无法改变它,因为这不是我的决定。我需要让它工作,我不能使用任何HTML标签,因为我会打印出来,因为它没有用HTML呈现。就像,我刚试过

Description: "My description1 <br /> My description2"});

它刚刚打印My description1 <br /> My description2。同样的老,同样的老。

更新:我无法控制它是如何显示的,我只是填写可用的属性,例如clickable,Title,Description等。我试图添加HTML在Description中,但无论你编写什么代码,它都会以字符串形式输出所有内容。

12 个答案:

答案 0 :(得分:8)

这取决于你对文本的处理方式,但我的猜测是你将它呈现为Html。在这种情况下,您应该使用<br />标记而不是\ n。

编辑:听起来这并不能解决您的问题,因为html标签是编码和显示的,而不是作为html标签互动。在这种情况下,您要么必须修改工具提示显示库,要么使用不同的库。

答案 1 :(得分:6)

什么样的tootips?如果它是一个在页面上浮动div的JavaScript库,则需要更改库以检测\n并插入换行符。

如果它是简单的title属性,我恐怕你不能(可靠地)在它们中添加换行符。有些浏览器会在两行上呈现title="a&#10;b"(或等效的JavaScript element.title= 'a\nb';);别人不会。

答案 2 :(得分:3)

由于工具提示剥离了html并且你无法改变它,因此没有很多选项。

一个(相当令人不愉快的)解决方案是将描述设置为

"My Description1 UNIQUE_STRING_TO_REPLACE My Description2"

然后,您可以搜索DOM以查找包含子字符串UNIQUE_STRING_TO_REPLACE的节点,并将其替换为<br />

如果你查看生成的html,你可以限制你的搜索以使其更快(你的工具提示可能都共享一个类或类似的id。)你必须自己检查,因为我不可以访问你的HTML。

非常 hackish(并且不是很快),你最好让工具提示允许你添加新行,但如果没有其他工作,你必须得到这是为了工作,这至少可以实现你的目标。

答案 3 :(得分:2)

您正在使用某种实现工具类型的库。它是什么?您应该阅读工具提示库的文档。

也许你可以做<p>My description1</p><p>My description2</p>或者你正在使用的库中没有实现多行描述。

我们没有足够的代码可以知道。也许向我们展示一下包含在html中的脚本列表。

答案 4 :(得分:2)

如果您希望在标记中显示文字,则新行不起作用,您必须在HTML中指定(通过<br /><p></p><div></div>的任意组合)

Description: "MyDescription1<br/>MyDescription2"

或者,更好的是,您可以在渲染实际内容时翻译HTML换行符中的换行符:

document.write(foo.Description.replace('\n','<br/>'));

如果要在alert()消息中显示Description文本,\ n将起作用。因此,最好在渲染时决定逃避,而不是在对象的内容中。

答案 5 :(得分:2)

您正在使用您不允许/无法编辑的专有JavaScript库。您还不允许/能够向我们展示其渲染功能的源代码,或者自己阅读它以弄清楚它是如何逃避数据的。最后,你不能/不会给我们这个库的名称(假设它是公开的)所以我们可以自己研究它。

你似乎已经尝试过某种合理的方式,有人可以认为这会起作用。

唯一可行的解​​决方案是联系您的供应商并要求回答。

答案 6 :(得分:1)

您可以将样式white-space: pre添加到工具提示窗口(内联样式还是样式表)?

答案 7 :(得分:0)

JS库正在转义HTML字符,并且您的内容显示为HTML,因此"\n"转换为换行符,但显示为简单空格。所以,使用可用的工具,你无法在不修改库的情况下做到这一点(或者可以阅读更多关于它的文章)。

答案 8 :(得分:0)

您可以尝试使用\r\n或其等效的&#10;&#13;。由于这是由浏览器呈现的,因此可能会将正确的Windows换行推送到工具提示。但完全不是特定于平台的。

答案 9 :(得分:0)

作为解决方法,将线条与中间点分开(·,U + 00B7)。不像正确的换行符那样可读,但考虑到工具提示约束,这是您的最佳选择。

答案 10 :(得分:0)

您可以发布您正在使用的工具提示库吗?

你是不是在任何机会从PHP(或吞下单独的反斜杠的其他脚本语言)中输出?

答案 11 :(得分:0)

您是否尝试使用反斜杠转义反斜杠?尝试使用"\\\n"(这是Google推荐的内容,但在alert()电话中对我无效。)

我使用alert()在Firefox " \n"中使用它。