jsTree没有填充IE,谷歌Chrome与JSON数据

时间:2012-11-08 18:25:27

标签: jquery tree jstree

我在IE和Chrome中检查了许多关于jsTree问题的线索,但没有一个解决方案帮助过我。

我在文件中添加了正确的doctype。 我用最后一个版本来纠正“”错误。

但IE和Chrome中仍然没有任何内容(甚至不是“loading ...”消息),但在Firefox中完美运行(无论3种浏览器的版本如何)。

您可以使用以下地址在不同的浏览器中直接生成并观察此错误: http://lbgi.igbmc.fr/orthoinspector/dbquery/?stype=text

这是我的树初始化代码(在jquery脚本中):

var compressedTreeSkeleton = generateCompressedJSONData(organismTreeSkeleton);

// Generate the tree. Data provided is JSON (JavaScript Object Notation).
$(function(){
    $("#treeview").jstree({
        "json_data" : { "data" : compressedTreeSkeleton },
        "types" : {
            "types" : {
                "inner_node" : {
                    "icon" : {
                        "image" : "images/node_icon_closed.png"
                    }
                },
                "leaf_node" : {
                    "icon" : {
                        "image" : "images/leaf_icon_1.png"
                    }
                }
            }
        },
        "search" : {
            "case_insensitive" : true
        },
        "plugins" : ["themes", "ui", "json_data", "checkbox", "types", "search"]

    });
});
}

以下是该代码第一行(变量compressedTreeSkeleton)生成的对象的概述,从chrome控制台输出中提取(您也可以直接在网站上查看它)。它是一个“对象”表,每个表包含树的节点信息。在创建树之前,通过postgresql数据库查询生成此信息(对象)。

[ Object {
    date: "2029-05-01"
    genus: "Oryza"
    identifier: "LOC"
    phylo_order: "59"
    phylum: "Eukaryota;Viridiplantae;Streptophyta;Streptophytina;Embryophyta;Tracheophyta;Euphyllophyta;Spermatop…"
    pk_bank: "1"
    pk_organism: "1"
    species: "sativa"
    taxid: "39947"
    __proto__: Object } ,

 Object, Object, Object, Object, (...) ]

在Chrome控制台中启动以下错误:

 Uncaught TypeError: Object [object Object] has no method 'jstree'

在IE中这个:

   Object doesn't support this property or method

在Firefox中正常工作......

我对这一切都很失落。知道我应该在哪里看? 谢谢你的建议。

1 个答案:

答案 0 :(得分:1)

问题是HTML中的这个标记:

<script type="text/javascript" src="js/jtree/\\_lib/jquery.js"></script>

Chrome和IE解决了这个拙劣的路径,并在jquery.tools.min.js中加载的jQuery的另一个版本之上加载了这个版本的jQuery。由于jstree是在非工具版本之前加载的,因此它将其方法添加到工具版本中,而工具版本会被非工具版本覆盖。在Firefox中,工具版本永远不会被覆盖,因为找不到路径,jstree()和所有相关方法都可用。

底线:删除那个拙劣的脚本标记和/或用jquery.tools解决版本问题。