【发布时间】:2013-02-07 13:49:07
【问题描述】:
这是一个奇怪的 IE 怪癖。步骤如下:
- 在 Internet Explorer 8 中转到 msn.com
- 调出开发工具
- 将浏览器模式切换为“IE8 兼容视图”
- 将文档模式切换为“IE7 标准”
- 切换到脚本选项卡
- 运行以下脚本:
true.toJSON()
它返回true。没有其他浏览器可以做到这一点。它给我带来了问题,因为它导致 jQueryUI 的工具提示小部件在 IE 中失败,因为在某些时候它将布尔值 true 传递给 $.isEmptyObject()。通常传入true 只会返回true,但由于true 现在有一个与之关联的方法(toJSON),它会返回false 并破坏小部件。
我注意到有些网站(例如 Google)可以尝试进行相同的测试,而 true.toJSON() 只是中断而不返回任何内容。这是什么奇怪的toJSON 方法,我该如何摆脱它?
【问题讨论】:
-
你真的需要支持IE7吗?也许你可以试试
delete true.toJSON。true是一个布尔对象 -
大概应该是
delete Boolean.prototype.toJSON- 但这似乎是一个非常糟糕的主意。 -
这似乎是特定于msn.com。尝试其他网站,您会发现大多数网站都没有。这意味着 MSN 通过扩展
Boolean.prototype自己定义了方法。 -
它肯定会出现在其他网站上,比如 USA.gov 和我正在开发的网站。我不知道为什么。
-
如果它只出现在特定设置下的一个浏览器中,尝试删除它可能是个好主意
标签: javascript internet-explorer internet-explorer-8 cross-browser jquery-ui-widget