我想要一个可靠的函数来编码 Highcharts 中的图表标题、字幕、系列名称等。正常的 HTML 编码功能不起作用。
如果我有一个字符串客户端,我现在决定简单地替换<
为<
:
function highchartsEncode(s) {
return s.replace(/</g, "<");
}
在 ASP.Net MVC 视图中构建图表时,我使用:
string HighchartsEncode(string s)
{
return HttpUtility.JavaScriptStringEncode(s).Replace(@"\u003c", "<");
}
但是,我不知道如何为 Highcharts 编码一个字符串,以便它显示出来<
,这让我很困扰(想象一下你想要绘制 html 实体的使用频率图表)。
背景
Highcharts标签和字符串格式帮助告诉我们:
Highcharts 中的文本和标签以 HTML 形式给出,但由于 HTML 是在 SVG 中解析和呈现的,因此仅支持一个子集。支持以下选项卡:
<b>, <strong>, <i>, <em>, <br/>, <span>
. Span 可以使用 style 属性设置样式,但仅处理与 SVG 共享的与文本相关的 CSS。大多数在 Highcharts 中处理文本的地方,后面还有一个名为 useHTML 的选项。当这是真的时,文本将作为 HTML 布局在图表顶部。这允许完整的 HTML 支持,如果您想在标签中添加图像、在工具提示中添加表格等,这可能是一个好主意。缺点是它总是被放置在所有其他 SVG 内容之上,而且它是在导出的图表中没有以相同的方式呈现。使用 HTML 还可以解决一些带有双向文本的旧浏览器错误。在国际化下阅读更多内容。
因此,如果我不使用 useHTML,我应该如何对任意字符串进行编码,以便它们在 Highcharts 中逐字显示?Highcharts 似乎可以处理某些实体,例如 ,<
但不能处理其他实体,例如&
,所以我不能简单地使用常规 HTML 编码函数对文本进行编码。
以下是一些测试,看看在几种不同情况下会发生什么:http: //jsfiddle.net/franzo/2nRPS/
对上述内容有何改进建议?