我正在编写基本的Chrome扩展程序,以便通过JSON Feed在多功能框中添加建议。几乎所有输入的查询都会在建议下拉列表中按预期显示结果。
但是,似乎只要在描述中返回&符号(&),Chrome就会抛出错误。
抛出的错误显示为"xmlParseEntityRef: no name(...)"
,并通过Chrome中的parseOmniboxDescription
方法调用。
对此事的任何帮助将不胜感激。我不确定这是否是唯一存在该问题的角色,或者它是否更广泛。
答案 0 :(得分:3)
多功能框架建议的当前API要求将它们指定为编码的XML文本,而不仅仅是纯文本。包括&
在内的某些字符需要进行适当编码。
要在浏览器JavaScript中对整个XML字符串进行编码,您可以执行以下操作:
function encodeXml(s) {
var holder = document.createElement('div');
holder.textContent = s;
return holder.innerHTML;
}
console.log(encodeXml("Good & Bad > Bad & Good"));
// "Good & Bad > Bad & Good"
如果在将文本传递给多功能框API之前对文本执行此操作,则错误应该消失。
根据the documentation,您可以使用<url>
,<match>
和<dim>
来进一步注释您的结果。但是,您可能希望使用更加结构化的XML构建方法,而不是简单地连接字符串。 (我不知道这些XML元素是否具有任何属性,但如果它们有,则上面的方法可能不足以编码属性值。)