Est JSON.stringify() pris en charge par IE 8?
- Je besoin pour utiliser:
JSON.stringify()
qui doit être pris en charge par Chrome, Safari et Firefox. Je pense que IE8 a également le soutien de l'objet JSON. Je pense que IE7 et 6 ne sont pas, je fais donc ceci:
<!--[if lt IE 8]>
<script src="http://www.json.org/json2.js"></script>
<![endif]-->
donc, je pense que cela va importer le JavaScript externe seulement si IE6 & 7. J'ai regardé l'URL où le script est hébergé, ils sont compris que si la version de IE est inférieure à 9:
http://code.google.com/p/html5shiv/
<!--[if lt IE 9]>
<script src="http://www.json.org/json2.js"></script>
<![endif]-->
dois-je donc être notamment présent pour IE 8 trop?
- json.org/json2.js comme il l'a promis dans le code source, est un gros 404. Vous pouvez utiliser cette can si vous ne pouvez pas l'hôte json2.js vous-même: cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js
- Pouvez-vous s'il vous plaît marquer une réponse comme correcte. Merci.
- Pour ceux qui en ont besoin, la source, le fichier se trouve maintenant ici:raw.githubusercontent.com/douglascrockford/JSON-js/master/...
Vous devez vous connecter pour publier un commentaire.
Pour répondre à la question dans le titre directement, oui IE8 prend en charge
JSON.stringify()
nativement.IE8 est la première version de IE pour obtenir ce soutien, et la fonctionnalité est expliquée en détail par l'équipe de dev ici:
http://blogs.msdn.com/b/ie/archive/2008/09/10/native-json-in-ie8.aspx
La réponse à la deuxième partie de la question, oui vous devez inclure d'autres fonctionnalités pour IE6/IE7. Quelque chose comme Modernizr, il est facile de vérifier cela.
Noter que si l'utilisateur est en mode de Compatibilité IE8, l'objet JSON ne sera pas disponible.
Si vous essayez
JSON.stringify()
l'aide d'internet explorer 8, vous devez vous assurer qu'il ne fonctionne pas en mode de compatibilité.Voir Objet JSON pas défini dans Internet Explorer 8
Vous aurez besoin d'ajouter
à votre page
Il y a une meilleure solution...
Cela ne veut pas répondre directement à votre question, il offre une solution complète à votre problème plutôt.
La jquery json bibliothèque fournit un wrapper qui utilise le natif de l'objet JSON mise en œuvre si elle est disponible et retombe à son propre JSON mise en œuvre si elle n'est pas. Sens il va travailler dans n'importe quel navigateur.
Voici l'Exemple d'Utilisation de la page d'accueil:
L'utilisation est très simple: la méthode toJSON stringifies la JS source; evalJSON convertit la chaîne JSON données à des objets JavaScript.
De vous regardez le code source, la mise en œuvre est étonnamment simple, mais il fonctionne très bien. Je l'ai utilisé personnellement dans quelques projets.
Il n'y a pas besoin de faire de la détection du navigateur si cela fonctionne dans tous les navigateurs.
$.toJSON
méthode.mettre code suivant dans votre fichier js ;
Vous n'avez pas besoin d'utiliser des conditions afin de déterminer s'il faut inclure json2.js ou pas. Regardez le code source:
Ce que ce n'est tout d'abord vérifier si
JSON
existe déjà comme un objet. Si non, alors il crée un nouvel objet à la maison du JSON fonctions. Ensuite, il vérifie un natif de la mise en œuvre de.stringify()
ou.parse()
existent. Si non, alors il crée ces fonctions.Bottom line: si une implémentation native existe, y compris
json2.js
n'écrase pas le natif de mise en œuvre. Sinon, il va ajouter cette fonctionnalité, donc il n'y a pas de raison, vous avez besoin d'utiliser le conditionnel, sauf si vous êtes en essayant de minimiser les demandes.(Il peut également être noté que IE10 ne prend pas en charge les instructions conditionnelles, je vous le recommande contre en s'appuyant sur eux, sauf si il n'y a pas d'autre alternative.)
Un shiv juste
createElement
's les éléments HTML5. Il n'a rien à voir avec JSON. Essayer d'obtenir une réelle parser JSON comme json2.js de Crockford.Qu'à le suivre jusqu'Mozilla a fait un polyfill pour l'objet JSON si vous en avez besoin pour travailler dans IE mode de compatibilité.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON