小编典典

Chrome sendrequest 错误:TypeError:将循环结构转换为 JSON

all

我有以下…

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

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


阅读 95

收藏
2022-03-11

共1个答案

小编典典

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

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

JSON.stringify不能像这样转换结构。

注意 :DOM 节点就是这种情况,它们具有循环引用,即使它们没有附加到 DOM 树。在大多数情况下,每个节点都有一个
ownerDocument which 引用。至少通过并再次引用了对 DOM 树的引用,这只是DOM 树中的多个循环引用之一
document``document``document.body``document.body.ownerDocument``document
__

2022-03-11