一尘不染

Chrome sendrequest错误:TypeError:将圆形结构转换为JSON

javascript

我有以下…

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

有谁知道是什么原因造成的?


阅读 274

收藏
2020-04-25

共1个答案

一尘不染

这意味着您在请求中传递的对象(我想是pagedoc)具有循环引用,例如:

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

JSON.stringify 无法转换这样的结构。

注意 :DOM节点就是这种情况,即使没有将它们附加到DOM树,它们也具有循环引用。在大多数情况下 ownerDocument
,每个节点都有一个documentdocument具有通过至少一个参考DOM树document.bodydocument.body.ownerDocument指回document再次,这是唯一
一个 在DOM树中的多个循环引用。

2020-04-25