dojo动态树加到frames总是报js错误【function "treeNodeSelected" does not exist on "[object]"】

alemjann 2009-10-26 05:38:49
浏览器:IE8, IE6
Tomcat 5.5
struts2.1.6

我根据网上的例子写了一个动态Ajax树,这棵树放在leftFrame里。点一个树上的节点时,会刷新rightFrame显示相应的东西。 每次重新启动tomcat然后访问页面的时候,树节点的展开/收起都没有问题,但是点击某个节点以后,再点击一个节点就会报js错:
消息: function "treeNodeSelected" does not exist on "[object]"
行: 96
字符: 1
代码: 0
URI: http://localhost:8080/portal/struts/dojo/struts_dojo.js

frame结构如下:

<frameset id="outframe" name="outframe" rows="88,0,*" cols="*" framespacing="0" frameborder="0" border="0" >
<frame src="top.do" name="topframe" scrolling="no" id="topframe" TOPMARGIN="1" MARGINHEIGHT="1"/>
<frameset id="allframe" name="allframe" rows="*" cols="18%,6,*" framespacing="0" frameborder="0" border="0" >
<frame src="<left.do/>" name="listframe" scrolling="auto" id="listframe" />
<frame src="mid.jsp" name="leftBarFrame" scrolling="no" id="leftBarFrame" noresize="noresize" LEFTMARGIN="0" MARGINWIDTH="0" />
<frame src="right.do" name="showframe" scrolling="auto" resize="no" id="showframe"/>
</frameset>
<frame src="HomePage.do" name="homeframe" scrolling="no" id="homeframe" TOPMARGIN="1" MARGINHEIGHT="1"/>
</frameset>

其中listframe显示树,showframe显示点击数节点后要显示的内容。

页面的代码如下(userTree.jsp):



<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="dojo" uri="/struts-dojo-tags"%>
<%
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);
response.setHeader("Pragma", "no-cache");
%>
<%@ include file="/include/check.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title></title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<dojo:head />
<script type="text/javascript">
dojo.require("dojo.lang.*");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.Tree");
dojo.require("dojo.widget.TreeRPCController");
</script>
<style type="text/css">
a:visited{
color:#12035C;
}
a:link{
color:#12035C;
}
</style>
<script type="text/javascript">
function treeNodeSelected(arg) {
if(""+arg.source.widgetId!="undefined"){
var url = "user/showMember.do?id=" + arg.source.widgetId;
top.showframe.location = url; //这句去掉就不报错了
alert("widgetId: "+arg.source.widgetId);

}
}

dojo.addOnLoad(function() {
var t = dojo.widget.byId('memberAndUsers');
var s = t.selector;
dojo.event.connect(s, 'select', 'treeNodeSelected');
});

function refresh()
{
location.reload();
}
</script>
<body bgcolor="white">
<dojo:div
cssStyle="position:absolute; border: 0px solid black; background-color:white;">

<a href="#"><img border="0" width="25" height="25" src="images/refresh.png" onclick="refresh()" alt="刷新" title="刷新"/></a>
<div dojoType="TreeRPCController" widgetId="treeController"
DNDcontroller="create" RPCUrl="<s:url />"></div>
<div dojoType="Tree" widgetId="memberAndUsers" toggle="fade"
controller="treeController">
<div dojoType="TreeNode" title="<s:property value='root.title' />"
widgetId='<s:property value="root.id" />'
isFolder='<s:property value="root.children.length > 0" />'
objectId='<s:property value="root.id" />'></div>
</div>
</dojo:div>
</body>
</html>




...全文
151 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
alemjann 2009-10-29
  • 打赏
  • 举报
回复
我发现:如果重新打开或者刷新浏览器,问题就会出现,但是只要重新访问url,比如点击收藏夹里的这个地址,或者地址栏里直接“转到”,错误就会消失。
alemjann 2009-10-28
  • 打赏
  • 举报
回复
没有熟悉Dojo Tree的么?
alemjann 2009-10-26
  • 打赏
  • 举报
回复
只要是右边的showframe单独刷新,左边再点击树节点就会报错。。。。。。
我甚至把所有树节点指向的url都改成了右边最开始默认显示的欢迎页面,问题依旧!

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧