Chrome 多功能框特殊字符抛出错误
Chrome Omnibox Special Characters Throw Error
我正在编写一个基本的 Chrome 扩展,用于在多功能框中添加来自 JSON 提要的建议。几乎所有输入的查询都会在建议下拉列表中显示预期的结果。
但是,似乎只要返回一个和号 (&) 作为描述的一部分,Chrome 就会引发错误。
抛出的错误为 "xmlParseEntityRef: no name(...)"
并从 Chrome 中的 parseOmniboxDescription
方法调用。
如能就此事提供任何帮助,我们将不胜感激。我不确定这是唯一有这个问题的角色还是更普遍。
多功能框建议的当前 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 元素是否有任何属性,但如果有,上面的方法 可能不足以编码属性值 。)
我正在编写一个基本的 Chrome 扩展,用于在多功能框中添加来自 JSON 提要的建议。几乎所有输入的查询都会在建议下拉列表中显示预期的结果。
但是,似乎只要返回一个和号 (&) 作为描述的一部分,Chrome 就会引发错误。
抛出的错误为 "xmlParseEntityRef: no name(...)"
并从 Chrome 中的 parseOmniboxDescription
方法调用。
如能就此事提供任何帮助,我们将不胜感激。我不确定这是唯一有这个问题的角色还是更普遍。
多功能框建议的当前 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 元素是否有任何属性,但如果有,上面的方法 可能不足以编码属性值 。)