Maison >interface Web >js tutoriel >Comment corriger « TypeError : conversion de la structure circulaire en JSON » dans l'extension Chrome « sendRequest » ?

Comment corriger « TypeError : conversion de la structure circulaire en JSON » dans l'extension Chrome « sendRequest » ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-23 13:47:16504parcourir

How to Fix

Résolution de « TypeError : conversion de la structure circulaire en JSON » dans Chrome sendRequest

Dans les extensions Chrome, en utilisant chrome.extension.sendRequest pour communiquer avec les scripts en arrière-plan peuvent conduire à l'erreur « TypeError : Conversion de la structure circulaire en JSON ». Cette erreur se produit lorsque l'objet de requête contient une référence circulaire, l'empêchant d'être converti au format JSON pour la transmission.

Considérez l'extrait de code suivant :

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

Si l'objet pagedoc contient un référence circulaire, comme expliqué ci-dessous, le code échouera avec l'erreur susmentionnée.

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

Dans les données JSON, les références circulaires ne sont pas autorisées. Les nœuds DOM présentent également des références circulaires, même s'ils ne sont pas attachés à l'arborescence du document. Par exemple, chaque nœud possède une propriétéownerDocument qui fait référence au document, et document.body.ownerDocument fait à nouveau référence au document ; ce n'est qu'une des nombreuses références circulaires dans l'arborescence DOM.

Solution

Pour résoudre ce problème, identifiez et supprimez les références circulaires de l'objet de requête. Par exemple, si pagedoc est un nœud DOM, vous pouvez le supprimer de l'objet de requête et inclure uniquement ses propriétés pertinentes. Vous pouvez également utiliser une bibliothèque qui gère les références circulaires.

En suivant ces étapes, vous pouvez résoudre efficacement l'erreur « TypeError : Conversion de la structure circulaire en JSON » dans les appels sendRequest de l'extension Chrome.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn