ztree树结构IE和360的兼容问题
ztree吧
全部回复
仅看楼主
level 1
xmwjfid 楼主
遇到一个很奇怪的问题如下:
我是用到异步加载的技术,根结点是 中国,我点击中国下面列出各个省份 在IE中省份是在中国的下级没错,但是在360浏览器中省份居然和中国同级了 ,截图如下。但是到了省份的下一级就不会出现这个问题了 很奇怪,下面我贴出代码,高手帮帮忙
图1:360浏览器下
图2:ie浏览器下
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@include file="/common/jsp/basePath.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>产品类别树</title>
<script type="text/javascript" src="<%=basePath%>js/jquery.js"></script>
<script type="text/javascript" src="<%=basePath%>js/ztree.js"></script>
<link rel="stylesheet" href="<%=basePath%>css/ztree/demoStyle/demo.css" type="text/css">
<link rel="stylesheet" href="<%=basePath%>css/ztree/zTreeStyle/zTreeStyle.css" type="text/css">
<script type="text/javascript">
var zTree;
function zTreeBeforeExpand(treeId, treeNode) {
if (!treeNode.isAjaxing) {
startTime = new Date();
ajaxGetNodes(treeNode, "refresh");
return false;
} else {
alert("地区数据 正在下载数据中,请稍后展开节点。。。");
return false;
}
return true;
}
function zTreeAjaxSuccess(event, treeId, treeNode, msg) {
if (!msg || msg.length == 0) {
return;
}
eval("var $app = "+msg+";");
var lr =$app.lr;//这边的lr是在后台的一个list**
var id,pId,name,node;
if(lr.length==0)
{
treeNode.icon = "";
zTree.updateNode(treeNode);
return false;
}
var treeNodes="[";
$.each($app.lr, function(i, add) {
id = add.regionId;
pId = add.parentId;
name= add.regionName;
node = "{'id':'"+id+"','pId':'"+pId+"','name':'"+name+"',isParent:true},";
treeNodes =treeNodes+node;
}
);
treeNodes =treeNodes.substr(0,treeNodes.length-1);
treeNodes = treeNodes+"]";
treeNodes = eval(treeNodes);
zTree.addNodes(treeNode, treeNodes);
treeNode.icon = "";
zTree.updateNode(treeNode);
zTree.selectNode(treeNode.nodes[0]);
}
function zTreeAjaxError(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) {
alert("异步获取数据出现异常。");
treeNode.icon = "";
zTree.updateNode(treeNode);
}
function init()
{
var setting = {
expandSpeed: "",
async: true,
asyncUrl: getUrl,
callback: {
beforeExpand: zTreeBeforeExpand,
asyncSuccess: zTreeAjaxSuccess,
asyncError: zTreeAjaxError
}
};
var zTreeNodes = [
{ 'id':'1', 'pId':"0", 'name':'中国',isParent:true}
];
zTree = $("#tree").zTree(setting, zTreeNodes);
}
function getUrl(node)
{
var url="<%=basePath%>address/list.htm?id=";
url=url+node.id;
return url;
}
</script>
</head>
<body onload="init()">
<div id="tree" class="tree" >
</div>
<a id="onAsync"><br/></a>
</body>
2011年07月13日 05点07分 1
level 11
OMG, 360浏览器也冒出来了。。。鉴于实在不想在自己的机器上安装360浏览器。。。只能稍微麻烦一点了,
首先请问你用360浏览器看zTree的Demo(包括 异步加载、js操作、默认编辑等)时是否出现二级节点与一级节点几乎并列的情况了吗?
2011年07月13日 07点07分 2
level 1
xmwjfid 楼主
看demo的时候没出现那种情况
2011年07月14日 05点07分 3
level 11
给你个思路,
1、确定是js造成的还是 css造成的
2、确定问题后可以利用屏蔽代码以及调试工具来找到错误原因。
举例:
找一个demo,把它一点点的改成你的那样,中途改一部分然后就测试一下,这样应该可以比较快速的定位问题原因。 如果你看demo完全没有这种情况,那么估计70%的可能性是由于你增加的代码或者css造成。
请你先自己找找问题,如果还是无法解决,请继续沟通。
2011年07月14日 05点07分 4
level 1
xmwjfid 楼主
那个问题已经解决了,我原来是用<div class="tree"></div>,现在改成<div ><ul class="tree"></ul></div>就可以了,是css的问题。杯具。。。
2011年08月03日 01点08分 5
level 11
能解决就好了! :) 这次做v3.0的时候,css也做了一些改造,同时,建议以后css定义都尽量避免直接针对 id 进行css定义,因为#xx 定义的css权值太高,很容易造成冲突。
2011年08月03日 02点08分 6
level 1
还来一个关于360的问题,那个树形能在火狐显示,在360就不能显示了
var zNodes=[
<#list unitDTOs as unitDTO>
{id:"${unitDTO.unid!}",pId:"${unitDTO.pid!"0"}",name:"${unitDTO.unname!}",url:"/unit/getUnitTree.action?unitDTO.unid=${unitDTO.unid!}" },
</#list>
];
这样的树,可以在火狐显示,不能在360显示!
var zNodes=[
{id:"0" ,pId:"" ,name:"全部资源"},
<#if result??>
<#assign resources = result.result>
<#if resources?? && resources?size!=0>
<#list resources as res>
<#if res_has_next>
{id:"${res.reid!}",pId:"${res.repid!"0"}",name:"${res.resname!}"},
<#else>
{id:"${res.reid!}",pId:"${res.repid!"0"}",name:"${res.resname!}"}
</#if>
</#list>
</#if>
</#if>
];
这样的树能在360上显示,是什么原因!
2012年05月23日 02点05分 7
level 6
360好像用的是IE的引擎吧,而且大概还是IE6的水平,所以 = =
2012年05月23日 05点05分 8
level 11
应该还是样式问题在作怪,另外也顺便看看最开始的 W3C的 DOCTYPE 是否正确?
2012年05月23日 14点05分 9
1