ホームページ >ウェブフロントエンド >jsチュートリアル >Chrome 拡張機能「sendRequest」の「TypeError: 循環構造を JSON に変換中」を修正する方法?
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 サイトの他の関連記事を参照してください。