我需要在不同的行中放置不同的信息,我有一个工作的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中,但无论你编写什么代码,它都会以字符串形式输出所有内容。
答案 0 :(得分:8)
这取决于你对文本的处理方式,但我的猜测是你将它呈现为Html。在这种情况下,您应该使用<br />
标记而不是\ n。
编辑:听起来这并不能解决您的问题,因为html标签是编码和显示的,而不是作为html标签互动。在这种情况下,您要么必须修改工具提示显示库,要么使用不同的库。
答案 1 :(得分:6)
什么样的tootips?如果它是一个在页面上浮动div的JavaScript库,则需要更改库以检测\n
并插入换行符。
如果它是简单的title
属性,我恐怕你不能(可靠地)在它们中添加换行符。有些浏览器会在两行上呈现title="a 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
或其等效的
。由于这是由浏览器呈现的,因此可能会将正确的Windows换行推送到工具提示。但完全不是特定于平台的。
答案 9 :(得分:0)
作为解决方法,将线条与中间点分开(·,U + 00B7)。不像正确的换行符那样可读,但考虑到工具提示约束,这是您的最佳选择。
答案 10 :(得分:0)
您可以发布您正在使用的工具提示库吗?
你是不是在任何机会从PHP(或吞下单独的反斜杠的其他脚本语言)中输出?
答案 11 :(得分:0)
您是否尝试使用反斜杠转义反斜杠?尝试使用"\\\n"
(这是Google推荐的内容,但在alert()
电话中对我无效。)
我使用alert()
在Firefox " \n"
中使用它。