我需要使用:
JSON.stringify()
Chrome、Safari和Firefox都应该支持它。我认为IE8也支持JSON对象。我认为IE7和6不需要,所以我这样做:
<!--[if lt IE 8]>
<script src="http://www.json.org/json2.js"></script>
<![endif]-->
因此,我认为只有在IE6 & 7的情况下才会导入外部JavaScript。我查看了托管脚本的URL,它们仅包含IE版本低于9的情况:
http://code.google.com/p/html5shiv/
<!--[if lt IE 9]>
<script src="http://www.json.org/json2.js"></script>
<![endif]-->
那么,我应该在IE8中也包含这个吗?
发布于 2011-08-25 23:32:55
为了直接回答标题中的问题,是的,IE8本机支持JSON.stringify()
。
IE8是第一个获得这种支持的IE版本,开发团队在这里对该功能进行了详细说明:http://blogs.msdn.com/b/ie/archive/2008/09/10/native-json-in-ie8.aspx
答案是问题的第二部分,是的,您需要包含IE6/IE7的替代功能。像Modernizr这样的东西可以很容易地检查这一点。
另请注意,如果用户在IE8的兼容性视图中,则JSON对象将不可用。
发布于 2012-06-08 06:15:44
如果你使用IE 8尝试JSON.stringify()
,你需要确保它不能在兼容模式下工作。请参阅JSON object undefined in Internet Explorer 8
您需要添加
<meta http-equiv="X-UA-Compatible" content="IE=8" />
转到您的页面
发布于 2014-02-27 21:09:49
将以下代码放入js文件中;
var JSON = JSON || {};
// implement JSON.stringify serialization
JSON.stringify = JSON.stringify || function (obj) {
var t = typeof (obj);
if (t != "object" || obj === null) {
// simple data type
if (t == "string") obj = '"'+obj+'"';
return String(obj);
}
else {
// recurse array or object
var n, v, json = [], arr = (obj && obj.constructor == Array);
for (n in obj) {
v = obj[n]; t = typeof(v);
if (t == "string") v = '"'+v+'"';
else if (t == "object" && v !== null) v = JSON.stringify(v);
json.push((arr ? "" : '"' + n + '":') + String(v));
}
return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
}
};
// implement JSON.parse de-serialization
JSON.parse = JSON.parse || function (str) {
if (str === "") str = '""';
eval("var p=" + str + ";");
return p;
};
https://stackoverflow.com/questions/3326893
复制相似问题