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!