200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > IE浏览器JSON未定义

IE浏览器JSON未定义

时间:2023-04-07 23:45:54

相关推荐

IE浏览器JSON未定义

问题起因:

将JavaScript对象类型的参数通过JSON.stringify转换成字符串传递时,IE6、7、8会报:“JSON”未定义 的错误。

错误分析:

JSON是包含在JScript 5.8引擎中,而为了向下兼容ie8只有在文档模式是”Internet Explorer 8 Standards”的时候才使用JScripte 5.8,其他时候使用JScripte 5.7特性。因此如果文档模式没有声明为”Internet Explorer 8 Standards”,ie8是找不到JSON对象的。因为没有兼容到ie6/7,所以必然在ie6/7中,JSON会出现未定义的问题。

解决方案1:

eval方式解析,恐怕这是最早的解析方式了。如下:

function strToJson(str){

var json = eval('(' + str + ')');

return json;

}

解决方案2:

new Function形式,比较怪异哦。如下:

function strToJson(str){

var json = (new Function("return " + str))();

return json;

}

解决方案3(推荐 万能方法):

.通过在html文件的head头内引入json2.js文件来解决(万能方法):

- json2.js作用:chrome浏览器等现代浏览器中存在JSON全局变量。这个变量有两个方法stringify(将js对象转化成json字符串)和parse(将json字符串转化成js对象)。这两个方法在js对象和json字符串转化过程中很有用。但是IE等老旧浏览器中没有这个全局变量。json2.js的作用就是:判断是否有全局变量JSON,如果没有就创建它。

- json2.js下载地址:/douglascrockford/JSON-js

解决方案4(推荐)

声明”Internet Explorer 8 Standards”模式(不需要兼容到ie6/7):

方法如下:

在文档头添加<meta http-equiv="X-UA-Compatible" content="IE=8" >

使用<!DOCTYPE>来声明文档

X-UA-Compatible是针对ie8新加的一个设置,对于ie8之外的浏览器是不识别的

作用是将浏览器的兼容模式关闭,用户不可选择ie的显示模式为兼容模式

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。