我正在使用Crockford的json2.js。当我想要字符串化时,我会JSON.stringify()
...效果很好。
然而,那些看过代码的人知道它会延迟到现有的JSON对象和属性。我怀疑我遇到的某个问题可能是由于这种尊重。
是否有JSON对象的属性我可以检查浏览器是否正在使用Crockford的对象,还是其他一些?能够做alert(JSON.version());
答案 0 :(得分:4)
您可以决定使用这样一个:
<script>window.JSON || document.write('<script src="js/json2.js"><\/script>')</script>
首先检查window.JSON
(由浏览器支持)是否存在,使用其他导入Crockford的json2.js。
var whichJSON = null;
if (! window.JSON) {
document.write('<script src="js/json2.js"><\/script>');
whichJSON = 'Crockford Version';
}
else {
whichJSON = 'Browser Native Version';
}
alert(whichJSON);
答案 1 :(得分:3)
在加载Crockford的脚本之前,您可以像他一样检查全局JSON对象:
<script>
var JSON,
nativeJSON = true;
if (!JSON) {
var nativeJSON = false;
document.write('<script src="js/json2.js"><\/script>');
}
if (!nativeJSON) {
// All JSON objects are using Crockford's implementation
} else {
// All JSON objects from here on out are NOT using Crockford's implementation
}
</script>