【问题标题】:Chrome Omnibox Special Characters Throw ErrorChrome 多功能框特殊字符抛出错误
【发布时间】:2016-06-18 13:10:19
【问题描述】:

我正在编写一个基本的 Chrome 扩展程序,以从 JSON 提要在多功能框中添加建议。几乎所有输入的查询都会在建议下拉菜单中按预期显示结果。

但是,似乎每当在描述中返回与号 (&) 时,Chrome 都会引发错误。

抛出的错误读取 "xmlParseEntityRef: no name(...)" 并从 Chrome 中的 parseOmniboxDescription 方法调用。

对于此事的任何帮助将不胜感激。我不确定这是唯一有这个问题的角色还是更普遍。

【问题讨论】:

    标签: javascript json google-chrome google-chrome-extension omnibox


    【解决方案1】:

    当前的多功能框建议 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 元素是否有任何属性,但如果有,上面的方法可能不足以编码属性值。)

    【讨论】:

    • 谢谢!我非常专注于 URL 编码,完全忽略了 XML。
    猜你喜欢
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多