ホームページ >ウェブフロントエンド >jsチュートリアル >Chrome 拡張機能「sendRequest」の「TypeError: 循環構造を JSON に変換中」を修正する方法?

Chrome 拡張機能「sendRequest」の「TypeError: 循環構造を JSON に変換中」を修正する方法?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-23 13:47:16504ブラウズ

How to Fix

Chrome sendRequest での「TypeError: Converting Circular Structure to JSON」を解決する

Chrome 拡張機能で、chrome.extension.sendRequest を利用して通信します。バックグラウンド スクリプトにより、「TypeError: Converting Circular Structure to JSON」エラーが発生する可能性があります。このエラーは、リクエスト オブジェクトに循環参照が含まれているため、送信用に JSON 形式に変換できない場合に発生します。

次のコード スニペットを検討してください。

chrome.extension.sendRequest({
  req: "getDocument",
  docu: pagedoc,
  name: 'name'
}, function(response) {
  var efjs = response.reply;
});

pagedoc オブジェクトに循環参照を使用すると、以下で説明するように、コードは前述のエラーで失敗します。

var a = {};
a.b = a;

JSON データでは、循環参照は許可されません。 DOM ノードは、ドキュメント ツリーに接続されていない場合でも、循環参照を示します。たとえば、各ノードにはドキュメントを参照する ownerDocument プロパティがあり、document.body.ownerDocument がドキュメントを再度参照します。これは、DOM ツリー内の多数の循環参照の 1 つにすぎません。

解決策

この問題を解決するには、リクエスト オブジェクトから循環参照を特定して削除します。たとえば、pagedoc が DOM ノードの場合、リクエスト オブジェクトからそれを削除し、代わりに関連するプロパティのみを含めることができます。あるいは、循環参照を処理するライブラリを使用することもできます。

次の手順に従うことで、Chrome 拡張機能の sendRequest 呼び出しでの「TypeError: Converting Circular Structure to JSON」エラーを効果的に解決できます。

以上がChrome 拡張機能「sendRequest」の「TypeError: 循環構造を JSON に変換中」を修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。