jquery - jsTree 在 IE8 上卡在 "loading"

标签 jquery json internet-explorer internet-explorer-8 jstree

我在两个不同的页面中有树,两个页面都有很多其他的 功能也。它们在 Firefox 中都运行良好,但 IE8 会卡住 在“正在加载..”上,没有明显的错误消息(我没有任何 为 IE8 安装了 devtools,因为我不知道)。

我在网上查了一下,发现我应该声明一个文档类型,它 我做到了,但没有帮助。我还尝试将页面剥离到 bare Essentials+jstree,但是树还是不行。

这是代码。我去掉了一些我认为不是的部分 必要的(尽管考虑到这个问题,它们可能是必要的)。

我想我在 jstree 主页的某个地方看到了一些内容 变量名和 IE 不兼容 - 比如“use id 而不是名字”?我的问题可能是因为类似的事情吗? 我也明白一些 IE 问题是因为 IE 的奇怪方式 处理版本(或者其他什么,我不太明白)。什么 这是否意味着,这可能是我的问题的根源吗?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/
TR/xhtml11/DTD/xhtml11.dtd">

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
-SNIP-
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/
jqueryui/1.8.3/themes/base/jquery-ui.css" type="text/css" />
   <script src="<%= hostUrl %>/js/jquery-1.4.2.js" type="text/
javascript"></script>
   <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/
jquery-ui.js" type="text/javascript"></script>
   <script src="http://jquery-ui.googlecode.com/svn/tags/latest/external/
jquery.bgiframe-2.1.1.js" type="text/javascript"></script>
   <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.3/i18n/
jquery-ui-i18n.min.js" type="text/javascript"></script>
<script src="<%= hostUrl %>/js/jsTree/jquery.jstree.js" type="text/
javascript"></script>
   <link rel="stylesheet" type="text/css" href="/WebUI2/js/jsTree/themes/
css/style.css" />
   <script type="text/javascript" src="/WebUI2/js/jsTree/themes/js/
jquery-ui-1.8.13.custom.min.js"></script>
-SNIP-
<script>


$(function () {

   $("#tree")

   .jstree({
           "json_data" : {
                   "ajax" : {
                           "url" : "getAreaTree?treeType=Areas&ownerPhone=<
%=webSessionObject.getUserPhoneNum()%>",
                           "data" : function (n) {
                       return { id : n.attr ? n.attr("id") : 0 };
                   }
                   }
           },

           types : {
                   types : {

                           "folder" : {

                           },
                           "file" : {
                                   "valid_children" : "none"
                           }
                   }
           },

           checkbox : {
                   "real_checkboxes" : "true",
                   "override_ui" : "true",
                   "real_checkboxes_names" : function(n){
                           console.log("Aasd");
                           return[("area"+n[0].id),n[0].id];
                   }
           },

           themes : {
                   theme : "apple"
           },

           "plugins" : ["json_data", "ui", "checkbox", "types", "themes" ]
   });




});
</script>

<div class="box_start">
 <div class="box_content">
   <h1><fmt:message key="owner.text.areas" /></h1>
    <div id="tree"style="overflow:auto border:none"></div>
       <br />
   </div>
   <div class="box_end"></div>
 </div>

此复制粘贴适用于另一个论坛,此后我做了一些更改。我已将 jQuery 更新到最新版本 (1.6.2),并且删除了一些自关闭标签(链接、输入、中断)。

这是我的 JSON 的片段(它不是整个 JSON,因此括号中可能有错误)。更新版本使用“idx”而不仅仅是“x”,x 是一个数字。

[{ "data" : "Areas", "attr" : { "id" : "1", "rel" : "folder" }, "state" : "open",
"children" : [{ "data" : "[Testi]", "attr" : { "id" : "261", "rel" : "folder" },  
"state" : "closed", 
"children" : [ ] } , { "data" : "TESTI", "attr" : { "id" : "11", "rel" : "folder" },   
"state" : "closed", 
"children" : [{ "data" : "[ Kansio ]", "attr" : { "id" : "271", "rel" : "folder" }, 
"state" : "closed", 
"children" : [ ] } , { "data" : "[ folder ]", "attr" : { "id" : "281", "rel" : 
"folder" }, "state" : "closed", 
"children" : [ ] } ] }]
PS。抱歉,格式很差,仍然无法完全处理 ^^;;

最佳答案

嗯,是的,我找到了答案。 IE8 挂起是因为树太大。我从 json 中删除了大约一半的条目,并且树加载得很好。

如果我找到解决这个问题的方法,我会报告。

编辑:我更新了 OpenLayers(另一个开源插件,这个用于绘制 map )并且 jsTree 开始工作。我以为我使用的是最新版本的 OpenLayers,但几天前我们的 svn 出现了问题,所以我想我毕竟没有使用绝对最新的版本。

至此,这个问题就得到了解答。我会在一两天内删除,因为我怀疑这对任何人都有帮助(“如果你使用 jstree 和旧版本的 OpenLayers,IE8 可能会挂起”..?对)。如果问题确实再次出现,我宁愿开始一个新问题,也不愿在这里继续。

关于jquery - jsTree 在 IE8 上卡在 "loading",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6596534/

相关文章:

javascript - 用指向其内容 jquery 的链接替换 ​​<img> 标签

Javascript shuffle 没有按预期工作

javascript - -webkit-appearance 不消失

internet-explorer - HTML 5 视频无法在 IE10 中播放 - "Invalid Source"

javascript - 如何降低 map 元素的高度

javascript - D3.js:连接 json 和 csv 不起作用

javascript - 将 JSON 数据本地加载到 JavaScript 文件中

javascript - JSON.parse 问题

javascript - 强制 IE 在加载时重新下载文本文件

javascript - IE9 和 jQuery : Sorting list items works in modern browsers and IE7, 但不是 IE9。