1. ホーム
  2. javascript

[解決済み] Chromeのsendrequestエラーです。TypeError: 循環構造をJSONに変換中

2022-03-19 03:40:16

質問内容

次のようなものがあるのですが...

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

で、以下を呼び出します。

case "getBrowserForDocumentAttribute":
  alert("ZOMG HERE");
  sendResponse({
    reply: getBrowserForDocumentAttribute(request.docu,request.name)
  });
  break;

しかし、私のコードは "ZOMG HERE" に到達せず、実行中に次のようなエラーを投げるのです。 chrome.extension.sendRequest

 Uncaught TypeError: Converting circular structure to JSON
 chromeHidden.JSON.stringify
 chrome.Port.postMessage
 chrome.initExtension.chrome.extension.sendRequest
 suggestQuery

どなたか、この原因についてご存知の方はいらっしゃいますか?

解決方法は?

つまり、リクエストで渡したオブジェクト(と思われる)が pagedoc )のような循環参照を持っています。

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

JSON.stringify は、このような構造を変換することはできません。

N.B. : これは、DOM ツリーにアタッチされていなくても、循環参照を持つ DOM ノードの場合でしょう。各ノードには ownerDocument を参照する。 document を使用する場合がほとんどです。 document は、少なくとも document.bodydocument.body.ownerDocument を参照しています。 document に過ぎないのですが、再び DOM ツリー内の複数の循環参照のうち、1 つを使用します。