這是一個奇怪的IE怪癖。以下是具體步驟:爲什麼boolean true在IE中必須使用JSON方法?
- 轉到msn.com在Internet Explorer 8
- 拉起開發工具
- 切換瀏覽模式爲 「IE8 compat的視圖」
- 切換文檔模式爲 「IE7標準」
- 切換到腳本選項卡
- 運行以下腳本:
true.toJSON()
它返回true
。沒有其他瀏覽器會這樣做。它給我的問題,因爲它導致jQueryUI的工具提示小部件失敗的IE瀏覽器,因爲在某些時候它傳遞一個布爾值true
至$.isEmptyObject()
。正常情況下,傳入true
只會返回true
,但由於true
現在有一個與之關聯的方法(toJSON
),它將返回false
並中斷小部件。
我注意到有一些網站(如谷歌),你可以嘗試做相同的測試和true.toJSON()
只是休息而不返回任何東西。這是什麼奇怪toJSON
方法,我該如何擺脫它?
你真的需要支持IE7嗎?也許你可以嘗試'刪除true.toJSON'。 'true'是一個布爾對象 – 2013-02-22 02:21:30
想必這應該是'delete Boolean.prototype.toJSON' - 但這似乎是一個非常糟糕的主意。 – Hamish 2013-02-22 02:34:09
這似乎是特定於[msn.com](http://www.msn.com/)。嘗試另一個網站,你會發現大多數沒有它。這意味着MSN通過擴展['Boolean.prototype']來定義方法本身(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Boolean/prototype)。 – 2013-02-22 02:35:41