IE6 (IE7) 上的 JSON
Posted
技术标签:
【中文标题】IE6 (IE7) 上的 JSON【英文标题】:JSON on IE6 (IE7) 【发布时间】:2011-01-30 23:36:40 【问题描述】:很抱歉我的不耐烦,但经过数周的熬夜和刚刚将我的网络上线后,我没有任何剩余精力进行调试......我只是无法谷歌如何在 IE6 和 IE7 上实现 JSON。 ..我正在使用
JSON.stringify(...)
据我了解,JSON 不是内置在 IE6-7 上的,必须在行内代码中动态添加......你是怎么做到的?
我已经有 jQuery - 我的正确理解是他们的 JSON 引擎依赖于浏览器原生引擎吗?
然后对导致 IE6-7 失败的无效 JSON 代码的一些评论,但我认为它不是 IE6-7 中的原生代码?
有人吗?
【问题讨论】:
【参考方案1】:由于您想使用JSON.stringify
方法,您需要包含JSON3 parser 以便在IE
此库符合 ECMAScript 第 5 版规范的标准方法,它会检查是否有可用的本机实现,因此在现代浏览器上将使用此本机实现。
【讨论】:
thx - 我需要代码以动态包含它仅在 IE6/7 上(也就是说,还需要浏览器检测) 或者我误解了 - 也许我不需要动态的,因为 JSON 使用浏览器原生(如果可用),所以它只是一个 在标题中? @David,你可以简单地将它包含在你的页面中,如果浏览器支持 JSON 全局对象,它不会做任何事情,或者如果你愿意,你可以只动态包含它if (typeof JSON == 'undefined')
我想添加 jQuery.parseJSON (api.jquery.com/jQuery.parseJSON) 而不是 json2,因为 Jquery 用于更多的网站。
@Stefan jQuery 不做字符串化,它只是做解析,这是不同的【参考方案2】:
一定是有什么误解。对象表示法在 javascript 中已经有一段时间了(据我了解,它是 JavaScript 的核心概念)。我的意思是,能够编写像var o= a:"b";
这样的代码
所以,如果你能做到这一点,你也可以调用eval('var o= a:"b";')
,这就是你在任何浏览器中“实现 JSON”的方式。
更新:重新阅读您的帖子,终于明白问题在于序列化对象,而不是反序列化它们。然后你可以使用 JavaScript 库:https://github.com/douglascrockford/JSON-js/blob/master/json2.js
【讨论】:
@David,如果您从某个外部数据源接收 JSON 数据,我认为这是您唯一的选择。不是吗? 如果你想从外部数据源加载数据,Eval 是最糟糕的选择,它会让你面临脚本注入攻击。如果你需要JSON
对象兼容性json2.js 是要走的路。
mikerobi,感谢您的评论(但不是反对)。请注意,json2.js 也会在内部调用 eval(请参阅 github.com/douglascrockford/JSON-js/blob/master/json2.js#L471 )尽管 Crockford 声明它不会执行,但我仍然相信可能有办法绕过它。【参考方案3】:
只需在您的文件中包含 json2.js 即可使用 JSON。 它也适用于 IE 9。
【讨论】:
【参考方案4】:“动态添加的内联代码”是使用 Douglas Crockfords json2 库提供的功能,如果浏览器版本本身不支持,则使用 jQuery 自己的实现。
jQuery 不依赖浏览器提供的任何 JSON 解码功能。如果浏览器确实支持 JSON 解码,那么 jQuery 会使用它。
【讨论】:
ok 使用 jQuery 会很棒,因为它已经包含在内,但是为什么 JSON.stringify(...) 不能在 IE6-7 上工作,jQuery JSON 有一些特殊的语法吗?跨度> JSON.stringify 确实适用于 IE6-7,前提是您已添加脚本:\ 在 IE7 中,我得到:SCRIPT5009: 'JSON' is undefined jquery-1.8.0.min.js, line 2 character 16953 when using this approach and not including the JSON-library. @AndersBranderud:不应该这样。 jQuery 明确地提供了一个后备。如果您可以在最新版本的 jQuery (1.9.0b) 中重现此行为,我会考虑filing a bug。 @Matt,谢谢!我提交了一个错误报告:使用 Jquery 1.9.0 和 jquery-1.8.0.min.js:调用方法 'jQuery.parseJSON' 会导致:“SCRIPT5009: 'JSON' is undefined jquery-1.8.0.min .js,第 2 行字符 16953" 在 IE 中7(我使用 IE9 和 IE7 作为“文档版本”)。以上是关于IE6 (IE7) 上的 JSON的主要内容,如果未能解决你的问题,请参考以下文章
IETester 是不是运行与 IE6 / IE7 相同的实际代码?还是仿真?
转 CSS hack:针对IE6,IE7,firefox显示不同效果