2016-02-19 36 views
-2

我正在開發一個Web應用程序,並使用jqTree插件作爲樹形菜單。創建樹時,我使用saveState參數。它在FireFox 12中工作正常,即它記住刷新時的樹狀態(使用localStorage),但在Internet Explorer 11中它不會將數據保存到localStorage或作爲cookie(我已根據來自jqTree作者的指示,並且我可以正確讀寫cookies)。絕望之餘,我將一個打開的節點列表作爲字符串保存到localStorage中,然後嘗試遍歷列表並使用jqTree的openNode函數打開節點。這也沒有用。任何人都可以請建議任何解決方法/修復?非常感謝你。 :)jqTree未在IE11中執行saveState工作正常FF12

P.S.它在IE11中崩潰,並在tree.jquery.js的第1839行中顯示錯誤消息「'JSON'未定義」。

更新:上述錯誤固定通過添加js_json2.js到配置和改變tree.jquery.js的線1839到

狀態= JSON.stringify(this.getState(),未定義); //添加未定義的第二個參數

  • 但是現在被摺疊的節點正確顯示展開/摺疊圖標,但應該是不可見的子節點仍然顯示如下:

▼node1ajax

child1 的child2

▼節點2

child3

►child4

SUB2

在這種情況下,SUB2不應該是可見的,但是。請幫忙! :)

+0

Firefox 12 ??爲什麼Firefox的特定版本?這有什麼特別之處? – Simba

+0

沒什麼特別的,只是這些是我的客戶端標準化的IE和FF版本。它是一個Intranet Web應用程序。 :) – Mikeyrush

+0

你的客戶是瘋狂的。 FF12是一個擴展支持版本。對它進行標準化而不是保持最新狀態的唯一原因是他們有特定的理由關心長期支持。但FF12的長期支持在很久以前就已完成。目前的ESR版本是38版本。這意味着你的客戶完全錯過了這一點。 – Simba

回答

0

錯誤消息JSON is undefined是一個重要的線索。

JSON API是一個標準化的API,被所有當前的瀏覽器支持,包括IE11和Firefox(是的,甚至可以追溯到FF12)。

那麼爲什麼IE11會說它支持它時沒有定義?

這隻有一個可能的原因:IE必須處於向後兼容模式,以消除對JSON API的支持。

這可能有兩種可能的模式:IE7兼容模式或Quirks模式。解決方案取決於您處於的模式。

您可以通過按F12調出瀏覽器開發工具並轉到仿真選項卡,找出您正在使用哪一個。如果它顯示的數字是「7」,那麼你處於IE7模式,如果它是5,那麼你處於怪癖模式。

  • 怪癖模式:如果您的HTML代碼沒有有效的文檔類型,IE的所有版本都會回退到怪癖模式。您也可以使用某些類型的無效HTML來觸發它,但缺少的文檔類型是最常見的原因。

    因此,請確保您的HTML頁面全部以像這樣的一行開頭:<!DOCTYPE html>。這應該確保你不在怪癖模式。 (其他有效的文檔類型也很好,但這是最簡單的方法)。

    此外,通過W3C驗證程序運行您的HTML,以確保您沒有任何可能影響它的HTML。

  • IE7兼容模式:這通常由瀏覽器設置觸發,尤其是在企業網絡環境中。您可以通過指定X-UA-Compatible元標記覆蓋它。您可以通過添加以下行的HTML代碼的<head>部分做到這一點:

執行兩個以上的東西,瀏覽器應該進入標準模式,這應該意味着你發現IE11開始表現得更好。您不需要再添加js_json2.js,並且可以撤消所有其他「修復」以嘗試解決它。

希望有所幫助。

+0

我看了一下整個Intranet設置,並且您確實正在將IE重新啓動到IE5模式,我將DOCTYPE更改爲<!DOCTYPE html>,並通過刪除URL來更改兼容模式設置,現在瀏覽器顯示正確。非常感謝您保留我的理智! :) :) :) :) :) – Mikeyrush

+0

沒問題。很高興我能幫上忙。請隨時點擊答案上的綠色勾號圖標,將其標記爲「已接受」。 :-) – Simba

+0

完成並再次感謝你。 :) – Mikeyrush

相關問題