Les meilleures pratiques pour l'intégration arbitraire JSON dans les DOM?

Je suis en train de penser à propos de l'incorporation de l'arbitraire JSON dans les DOM comme ceci:

<script type="application/json" id="stuff">
    {
        "unicorns": "awesome",
        "abc": [1, 2, 3]
    }
</script>

Ceci est similaire à la façon dont on peut stocker l'arbitraire d'un modèle HTML dans les DOM pour les utiliser plus tard avec un JavaScript moteur de template. Dans ce cas, on pourrait récupérer plus tard le JSON et analyser avec:

var stuff = JSON.parse(document.getElementById('stuff').innerHTML);

Cela fonctionne, mais est-ce la meilleure solution? Est-ce à violer toutes les meilleures pratiques ou standard?

Note: je ne suis pas à la recherche de solutions pour le stockage de JSON dans les DOM, j'ai déjà décidé que c'est la meilleure solution pour le problème que je vais avoir. Je suis en quête de la meilleure façon de le faire.

  • pourquoi ne pas vous l'avoir comme var en javascript?
  • il doit faire partie d'un document statique, il est ensuite traité par une chaîne complexe de encapsulé javascript. De le ranger dans le DOM est ce que je veux faire.
  • J'étais posé avec un problème similaire. Je voulais mettre les données dans un site différent pour chaque utilisateur sans faire une requête AJAX. J'ai donc intégré du PHP dans un récipient fait quelque chose de similaire à ce que vous avez ci-dessus pour obtenir les données en javascript.
  • Je pense que votre méthode originale est le meilleur en fait. Il est 100% valide en HTML5, il est expressif, il ne veut pas créer de "faux" des éléments que vous venez de supprimer ou de masquer avec du CSS; et il ne nécessite pas de codage de caractères. Quel est l'inconvénient?
  • Si vous avez une chaîne avec la valeur </script><script>alert()</script><script> à l'intérieur de votre objet JSON, vous aurez des surprises. Ce n'est pas sûr, à moins que vous désinfecter les données de la première.
  • si j'étais à l'aveuglette remplacer tout < dans la chaîne JSON avec \u003C, serait-ce suffisant? Il semble trop simple pour vraiment travailler...

InformationsquelleAutor Ben Lee | 2012-02-16