今天在调式ext的时候发现一个恶心的问题,错误提示如下:
错误: uncaught exception: [Exception... "Node cannot be inserted at the specified point in the hierarchy" code: "3" nsresult: "0x80530003 (NS_ERROR_DOM_HIERARCHY_REQUEST_ERR)" location: "http://localhost:8080/greatwall/script/ext/ext-all.js Line: 58"]
这个错误在ie下面是不存在,在FF和google的浏览器下都出现了这个问题。baidu几乎没有可以查到的资料,在google上面找了下,不少人遇到了这个问题。具体出现这个情况的场景是:
1、我利用ajax请求服务器,获取到accordion面板有多少个大的面板,动态的添加到ext中。
for ( var i = 0; i < array.length; i++) {
var obj = array[i];
accordion.add( {
id :obj.id,
title :obj.text,
html :"<div align='left' valign='top' id='" + obj.id + "'></div>"
});
accordion.doLayout(true);
buildTree(obj.id);
}
2、在ajax请求返回后,动态添加面板到accordion中,并且动态的生成一棵树。出现问题的地方就在这里,具体的代码是:el:subMenuId。去掉该代码,在FF和google、IE下面都可以查看树的效果,但是树的位置却发生了变化。
function buildTree(subMenuId) {
var root = new Ext.tree.AsyncTreeNode( {
text :"Autos",
draggable :false,
autoCreate:false,
id : subMenuId
});
var tree = new Ext.tree.TreePanel( {
el:subMenuId,
border :0,
animate :true,
enableDD :false,
loader :new Ext.tree.TreeLoader( {
dataUrl :"txn900001.do?subMenuId=" + subMenuId,
requestMethod :"GET"
}),
root :root,
rootVisible :false,
autoHeight :true,
containerScroll :false,
autoCreate:false
});
tree.render(subMenuId);
root.expand();
tree.on("click", treeClick);
}
目前这个问题还是没有很好的搞定。对ext的理解还是很简单,仅仅是简单的应用。距离真正意义上的理解还有很多路要走,特别是对于跨浏览器的各种问题。不过,今天把form下面的field基本上都进行了tags化处理,效果还是很不错的。后面需要利用已经开发的这个标签,在BS环境下试试效果如何,不可以急于求进。
PS:光棍节快乐。我不是光棍,上床陪老婆睡觉了。