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