-2

我正在开发一个 Web 应用程序,并且正在将 jqTree 插件用于树形菜单。我在创建树时使用了 saveState 参数。它在 FireFox 12 中运行良好,即它在刷新时记住树的状态(使用 localStorage),但在 Internet Explorer 11 中,它不会将数据保存到 localStorage 或作为 cookie(我已根据jqTree作者的说明,我可以很好地读写cookie)。

无奈之下,我将打开的节点列表作为字符串保存到 localStorage 中,然后尝试循环遍历列表并使用 jqTree 的 openNode 函数打开节点。这也不起作用。谁能建议任何解决方法/修复?非常感谢。:)

PS 它在 IE11 中崩溃,并在 tree.jquery.js 的第 1839 行出现错误消息“'JSON' is undefined”。

更新:上述错误已通过将 js_json2.js 添加到配置中并将 tree.jquery.js 的第 1839 行更改为

state = JSON.stringify(this.getState(),undefined); //added undefined as second argument

但是现在折叠的节点正确显示展开/折叠图标,但应该不可见的子节点仍然显示如下:

▼node1ajax

孩子1 孩子2

▼节点2

孩子3

►child4

子2

在这种情况下, sub2 不应该是可见的,而是可见的。

4

1 回答 1

0

错误消息JSON is undefined是这里的重要线索。

API 是一个标准化的JSONAPI,所有当前浏览器都支持,包括 IE11 和 Firefox(是的,甚至可以追溯到 FF12)。

那么为什么IE11支持它时会说它是未定义的呢?

这只有一个可能的原因:IE 必须处于向后兼容模式,该模式取消了对 JSON API 的支持。

有两种可能的模式:IE7 兼容模式或 Quirks 模式。解决方案取决于您所处的模式。

您可以通过按 F12 以调出浏览器开发工具并转到“仿真”选项卡来找出您所在的位置。如果它显示的数字是“7”,那么您处于 IE7 模式,如果它是 5,那么您处于 quirks 模式。

  • Quirks 模式:如果您的 HTML 代码没有有效的 doctype,所有版本的 IE 都会退回到 quirks 模式。您也可以使用某些类型的无效 HTML 来触发它,但缺少 doctype 是迄今为止最常见的原因。

    因此,请确保您的 HTML 页面都以如下所示的行开头:<!DOCTYPE html>. 那应该确保您没有处于怪癖模式。(其他有效的文档类型也很好,但这是最容易使用的)。

    此外,通过 W3C 验证器运行您的 HTML,以确保您没有任何可能影响它的损坏的 HTML。

  • IE7 兼容模式:这通常由浏览器设置触发,尤其是在企业网络环境中。X-UA-Compatible您可以通过指定元标记来覆盖它。您可以通过将以下行添加到<head>HTML 代码部分来执行此操作:

做以上两件事,浏览器应该进入标准模式,这应该意味着你会发现 IE11 开始表现得更好了。您不再需要添加 js_json2.js,并且您可能会撤消为尝试解决它而进行的所有其他“修复”。

希望有帮助。

于 2016-02-23T09:23:17.140 回答