Javascript 为什么布尔真在IE中有JSON方法?
这是个奇怪的怪癖。以下是步骤:Javascript 为什么布尔真在IE中有JSON方法?,javascript,internet-explorer,internet-explorer-8,cross-browser,jquery-ui-widget,Javascript,Internet Explorer,Internet Explorer 8,Cross Browser,Jquery Ui Widget,这是个奇怪的怪癖。以下是步骤: 在Internet Explorer 8中转到 打开开发工具 将浏览器模式切换到“IE8兼容视图” 将文档模式切换到“IE7标准” 切换到脚本选项卡 运行以下脚本:true.toJSON() 它返回true。没有其他浏览器能做到这一点。它给我带来了问题,因为它导致jQueryUI的工具提示小部件在IE中失败,因为在某个点上它将布尔值true传递给$。isEmptyObject()。通常传入true只会返回true,但由于true现在有一个与之关联的方法(toJSO
true.toJSON()
true
。没有其他浏览器能做到这一点。它给我带来了问题,因为它导致jQueryUI的工具提示小部件在IE中失败,因为在某个点上它将布尔值true
传递给$。isEmptyObject()
。通常传入true
只会返回true
,但由于true
现在有一个与之关联的方法(toJSON
),它返回false
并破坏小部件
我注意到有些网站(比如谷歌)可以尝试做同样的测试,而
true.toJSON()
只是中断而不返回任何内容。这个奇怪的toJSON
方法是什么?我该如何摆脱它?toJSON
是一种方法,如果在对象上定义,它可以指定JSON.stringify
在对象上的工作方式。查看更多详细信息。来自:
与其他类型一样,参数应始终是普通JavaScript对象
对象(DOM元素、基本字符串/数字、主机对象)的
无法跨浏览器提供一致的结果
换句话说,修复工具提示小部件。你真的需要支持IE7吗?也许您可以尝试
删除true.toJSON
true
是一个布尔对象。这应该是delete boolean.prototype.toJSON
——但这似乎是一个非常糟糕的主意。这似乎是特定于。尝试其他网站,你会发现大多数人都没有。这意味着MSN通过扩展定义了这个方法。它肯定会出现在其他网站上,比如USA.gov和我正在工作的网站上。我不知道为什么。如果在某些设置下它只出现在一个浏览器中,尝试删除它可能是一个好主意您是对的。我记录了工具提示小部件的一个缺陷。我发现JS错误的原因是因为只使用了jQueryUI代码的一个子集。