1

我想要一个可靠的函数来编码 Highcharts 中的图表标题、字幕、系列名称等。正常的 HTML 编码功能不起作用。

如果我有一个字符串客户端,我现在决定简单地替换<&lt;

function highchartsEncode(s) {
    return s.replace(/</g, "&lt;");
}

在 ASP.Net MVC 视图中构建图表时,我使用:

string HighchartsEncode(string s) 
{
    return HttpUtility.JavaScriptStringEncode(s).Replace(@"\u003c", "&lt;");
}

但是,我不知道如何为 Highcharts 编码一个字符串,以便它显示出来&lt;,这让我很困扰(想象一下你想要绘制 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 似乎可以处理某些实体,例如 ,&lt;但不能处理其他实体,例如&amp;,所以我不能简单地使用常规 HTML 编码函数对文本进行编码。

以下是一些测试,看看在几种不同情况下会发生什么:http: //jsfiddle.net/franzo/2nRPS/

对上述内容有何改进建议?

4

0 回答 0