`
yangjie1981
  • 浏览: 19769 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

IE8如何使用原生JSON对象?

阅读更多
在以前的文章里,我介绍了IE8支持原生的JSON对象,但是,在使用的时候,还需要注意一些问题。很多人使用下面的代码测试,就会报告说JSON未定义:

HTML 代码
<html>
<body>
<script type="text/javascript">
alert(typeof JSON);
</script>
</body>
</html>
既然IE8支持了JSON对象,那怎么还不能使用呢?原来,在IE8中使用原生JSON对象是有条件的。微软在介绍JSON对象时也有下面的一段注释:

Starting with JScript 5.8, by default, the JScript scripting engine supports the language feature set as it existed in version 5.7. This is to maintain compatibility with the earlier versions of the engine. To use the complete language feature set of version 5.8, the Windows Script interface host has to invoke IActiveScriptProperty::SetProperty.

Internet Explorer 8 opts into the JScript 5.8 language features when the document mode for Internet Explorer 8 is "Internet Explorer 8 Standards" mode. For other document modes, Internet Explorer uses the version 5.7 feature set.

JScript 5.8 includes native JavaScript Object Notation (JSON) support and the accessor methods for Document Object Model (DOM) prototypes.

由于JSON对象是在JScript 5.8及其以后的版本引入的,所以,默认情况下,IE8使用的是JScript 5.7版本,所以,原生JSON对象是无法使用的。那么,如何使用IE8的原生对象呢?
IE8为了最大限度地保证浏览器的向后兼容性,使原先创建的网页能够正常显示,默认采用的是IE7的渲染引擎,同时,IE8支持多种文档兼容性模式。具体来说有:

•“模仿 IE8”模式将告诉 Internet Explorer 使用 <!DOCTYPE> 指令来确定如何呈现内容。 标准模式指令将以 Internet Explorer 8 标准模式显示,而 Quirks 模式指令将以 IE5 模式显示。 与 IE8 模式不同,“模仿 IE8”模式遵循 <!DOCTYPE> 指令。
•“模仿 IE7”模式将告诉 Internet Explorer 使用 <!DOCTYPE> 指令来确定如何呈现内容。 标准模式指令以 Internet Explorer 7 标准模式显示,而 Quirks 模式指令以 IE5 模式显示。 与 IE7 模式不同,“模仿 IE7 模式”遵循 <!DOCTYPE> 指令。 对于很多网站来说,这是首选的兼容性模式。
•IE5 模式呈现内容的方式如同使用了 Internet Explorer 7 的 Quirks 模式来显示内容,这与 Internet Explorer 5 显示内容的方式非常相似。
•IE7 模式:无论页面是否包含 <!DOCTYPE> 指令,IE7 模式呈现内容的方式均如同使用了 Internet Explorer 7 的标准模式来显示内容。
•IE8 模式可最大程度地支持行业标准(包括 W3C 级联样式表级别 2.1 规范 和 W3C 选择器 API),并提供对 W3C 级联样式表级别 3 规范(工作草案) 的有限支持。
•Edge 模式将告诉 Internet Explorer 以可用的最高级别模式显示内容。 对于 Internet Explorer 8,这等同于 IE8 模式。 假设 Internet Explorer 的将来版本支持更高级别的兼容性模式,那么,设置为 Edge 模式的页面将以该版本支持的最高级别的模式显示。 当使用 Internet Explorer 8 查看时,这些相同的页面仍会以 IE8 模式显示。
详细介绍可以参见MSDN文档:定义文档兼容性(http://msdn.microsoft.com/zh-cn/library/cc288325(VS.85).aspx)。

注意:X-UA-compatible 标头不区分大小写;不过,它必须显示在网页中除 title 元素和其他 meta 元素以外的所有其他元素之前的标头中。

所以,要使用IE8的原生JSON对象,可以采取下面几种方法:

方法1:定义<!DOCTYPE> 

XML/XHTML 代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>孟宪会:JSON测试</title>
</head>
<body>
<script type="text/javascript">
alert(typeof JSON);
</script>
</body>
</html>
方法2:设置X-UA-compatible 标头


XML/XHTML 代码
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
<title>孟宪会:JSON测试</title>
</head>
<body>
<script type="text/javascript">
alert(typeof JSON);
</script>
</body>
</html>
或者
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" >
<title>孟宪会:JSON测试</title>
</head>
<body>
<script type="text/javascript">
alert(typeof JSON);
</script>
</body>
</html>
在实际编程程序的时候,最好的办法是进行判断,如果不支持原生的JSON,那么就是要json2.js提供的对象即可。
分享到:
评论

相关推荐

    原生JSON对象及兼容问题的解决

    标题中的“原生JSON对象及兼容问题的解决”主要涵盖了两个关键点:原生JSON对象的理解和在不同环境中处理JSON的兼容性问题。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个...

    json2.js 字符串转转json对象工具

    总的来说,json2.js是解决JSON处理兼容性问题的一个工具,它提供了一种安全且标准化的方式来在JavaScript中进行JSON字符串与对象之间的转换,尤其对于那些不支持原生JSON操作的老版本浏览器而言。

    IE8 原生JSON支持

    在这其中,IE8作为一个重要的版本,带来了许多创新性的改变,其中就包括对原生JSON的支持。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript语言的一个子集,易于阅读和编写,...

    IE中兼容模式下JSON未定义

    这是因为JSON(JavaScript Object Notation)是ECMAScript 5引入的一个内置对象,而在IE8及以下版本中并未原生支持JSON。这篇博文()很可能详细解释了如何在不支持JSON的IE浏览器中处理这个问题。 首先,我们需要...

    用来解决iejson不兼容的js

    然而,旧版本的IE(尤其是IE6、IE7和部分IE8)并不原生支持JSON对象,这给开发者带来了困扰,因为JSON在现代Web应用中被广泛用于数据传输。 描述中提到的"用来解决iejson不兼容的js"很可能就是指`json2.js`这个文件...

    JSON序列化与解析原生JS方法且IE6和chrome测试通过.docx

    尽管`eval`通常不推荐使用,因为它可能存在安全风险,但在没有原生JSON支持的老版本浏览器中,这是常见的解决办法。 需要注意的是,使用`eval`解析JSON字符串时,确保输入是可信的,因为`eval`可以执行任何...

    JSON2解决JSON未定义

    JSON2.js这个文件就是这个库的实现,当在老版本IE中引入这个脚本后,它会为浏览器提供JSON对象以及其parse和stringify方法。这样,无论是在较新的浏览器还是在旧版IE中,开发者都能使用标准的JSON接口来操作数据。 ...

    ECHARTS仪表盘IE8不兼容修复

    2. **JSON 支持**:IE8 不原生支持 JSON 对象,需要引入第三方库如 `json2.js` 进行JSON解析和序列化。 3. **CSS3 和 HTML5 支持**:ECharts 使用了一些CSS3选择器和HTML5的新特性,这些在IE8中可能需要使用条件...

    ACE 兼容ie8

    4. **JSON支持**:IE8不原生支持JSON对象,需要通过引入`json2.js`库来提供JSON的解析和序列化功能。 5. **DOM操作**:使用IE8兼容的方式处理DOM操作,例如避免使用`innerHTML`,而是采用`createElement`、`...

    一个使用JSON-lib和json2.js的示例

    在JavaScript中,JSON对象在ECMAScript 5及更高版本中是内置的,但较早的版本如IE6和IE7并不支持。json2.js库解决了这个问题,它提供了parse()方法用于解析JSON字符串到JavaScript对象,以及stringify()方法用于将...

    json2 脚本 使用说明

    这些浏览器在原生不支持JSON对象,而`json2.js`则提供了`parse`和`stringify`这两个关键方法,使得在这些浏览器中可以进行JSON的解析和序列化。 **json2.js的使用步骤:** 1. **引入库**:首先,你需要将`json2.js...

    json2 使用方法

    在JavaScript中,JSON对象是原生支持的,但在一些老版本的浏览器(如IE7及以下)中并不具备JSON处理能力。`json2.js`就是为了解决这个问题而诞生的,它引入了`JSON.parse()`和`JSON.stringify()`这两个方法,使得在...

    json/json2.js两个版本

    这个版本可能包含了更多的兼容性和性能优化,例如处理旧版IE浏览器的问题,这些浏览器默认不支持原生的JSON对象。 两个版本的对比可能涉及到以下方面: 1. **API一致性**:`json2.js`可能更加接近ECMAScript 5及...

    select2_ie8.rar

    IE8不原生支持JSON对象,所以如果Select2的初始化配置或数据源包含JSON格式的数据,我们需要引入json2.js库来提供JSON.parse和JSON.stringify的方法。 最后,当遇到Select2在IE8下报错时,应仔细检查错误信息,通常...

    json2 常用js

    总之,JSON2.js是一个针对老版本浏览器的JSON解析和序列化库,它弥补了这些浏览器缺乏原生JSON支持的不足。了解并熟练使用JSON2.js可以帮助开发者确保在各种环境下都能正确地处理JSON数据,提升应用程序的兼容性和...

    json2.js+介绍

    `json2.js` 是Douglas Crockford开发的一个JavaScript库,主要用于处理JSON格式数据,特别是在那些不支持原生JSON解析和序列化的老版本浏览器中。 在JavaScript中,`JSON.stringify()`方法用于将JavaScript值转换为...

    json2 json

    "json2"是Douglas Crockford开发的一个JavaScript库,主要用于解决早期版本的Internet Explorer(特别是IE6和IE7)不支持内置的JSON对象和方法的问题。在这些浏览器中,`JSON.stringify()`方法是缺失的,无法将...

    json2.js json.js

    在JavaScript中,原生的JSON对象在ECMAScript 5版本(ES5)及更新的环境中被内置,提供了`JSON.parse()`和`JSON.stringify()`两个核心方法。然而,在ES5之前的版本,如IE6和IE7,对JSON的支持并不完全。这就是json2....

    json的jar包

    JSON在JavaScript中是原生支持的,但早期的JavaScript版本(IE8以下)不支持JSON的一些功能,因此需要引入如json2.js这样的库来提供完整的JSON支持。这个文件通常用于在前端解析和生成JSON字符串,与后端进行数据...

Global site tag (gtag.js) - Google Analytics