3

JSON フィードからオムニボックスに提案を追加するための基本的な Chrome 拡張機能を作成しています。入力されたほぼすべてのクエリは、候補ドロップダウンに期待どおりの結果を表示します。

ただし、説明の一部としてアンパサンド (&) が返されるたびに、Chrome がエラーをスローするようです。

スローされたエラーは、 Chrome 内"xmlParseEntityRef: no name(...)"のメソッドから読み取られて呼び出されます。parseOmniboxDescription

この問題について何か助けていただければ幸いです。これがその問題を抱えている唯一のキャラクターなのか、それとももっと広範囲に広がっているのかはわかりません.

4

1 に答える 1

5

アドレスバーの候補の現在の 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"

テキストを omnibox API に渡す前にこの操作を実行すると、エラーは発生しなくなります。

ドキュメントに従って<url><match>、およびを使用<dim>して、結果にさらに注釈を付けることができます。ただし、単純に文字列を連結するのではなく、より構造化された XML 構築アプローチを使用することをお勧めします。(これらの XML 要素に属性があるかどうかはわかりませんが、属性がある場合、上記のアプローチは属性値のエンコードに適していない可能性があります。)

于 2016-03-04T17:35:53.170 に答える