iframe模块不刷新页面更新数据

fytx0113 2011-06-19 09:55:35
我jsp页面为:

<body>
<table style="margin: 0 0 0 0;" width="100%" cellpadding="0" cellspacing="0" height="100%">
<tr valign="top">
<td width="10%" height="100%" id="le">
<%--左侧的树 --%>
<div style="width: 150px; overflow: auto;margin-bottom: 0px; height: 100%; margin-left: 0px;">
<sx:tree id="treeDiv" cssClass="tree" label="" showGrid="true" showRootGrid="false" expandedNotifyTopics="expandedNotify">
<s:iterator value="treeList">
<sx:treenode label="<a href='menu4?tabId=%{nodekey}&root=%{treeList[0].pid}'>%{nodename}</a>">
<s:iterator value="children">
<sx:treenode label="<a href='menu4?tabId=%{nodekey}&root=%{treeList[0].pid}'>%{nodename}</a>" >
<s:iterator value="children">
<sx:treenode label="<a href='menu4?tabId=%{nodekey}&root=%{treeList[0].pid}'>%{nodename}</a>">
<s:iterator value="children">
<sx:treenode label="<a href='menu4?tabId=%{nodekey}&root=%{treeList[0].pid}'>%{nodename}</a>" >
<s:iterator value="children">
<sx:treenode label="<a href='menu4?tabId=%{nodekey}&root=%{treeList[0].pid}'>%{nodename}</a>" ></sx:treenode>
</s:iterator>
</sx:treenode>
</s:iterator>
</sx:treenode>
</s:iterator>
</sx:treenode>
</s:iterator>
</sx:treenode>
</s:iterator>
</sx:tree>
</div>
</td>
<td height="100%" width="1%" bgcolor="#3C64B9" onclick="hiddencolumns()"><span id="switchPoint" class="navPoint" title="关闭/打开左栏">3</span></td>
<td width="89%">
<%--左侧的目录树所对应的右边的选项卡效果实现 --%>
<s:if test="null != tabList2">
<sx:tabbedpanel id="tab2" closeButton="pane">
<s:iterator value="tabList2" status="st"><%--每五分钟刷新一次div中的内容,有10秒钟的延迟 --%>
<sx:div label="%{nodename}" updateFreq="5*60*1000" delay="10000">
页面组里展示的内容
<iframe name="cont" frameborder="0" id="${nodekey }" src="opinion?tabId=${nodekey }"
align="left" scrolling="auto" marginheight="0" marginwidth="0" width="100%" height="79%" >
</iframe>
</sx:div>
</s:iterator>
</sx:tabbedpanel>
</s:if>

<%--右侧的自定义页面或链接页要展示的内容--%>
<s:else>
<sx:div label="%{nodekey}" updateFreq="5*60*1000" delay="10000" id="sd">
<iframe style="margin: 0 ,0, 0, 0" name="cont" frameborder="0" id="cont" src="opinion?tabId=${nodekey }"
align="left" scrolling="no" marginheight="0" marginwidth="0" width="100%" height="85%" onload='IFrameReSizeHeight("cont");IFrameReSizeWidth("cont");'>
</iframe>
</sx:div>
</s:else>
</td>
</tr>
</table>

</body>

我想要里面的iframe模块每5分钟刷新一次,
但整个页面不出现闪烁,只是iframe中显示的内容会更新(如果数据库中有更新的话)
怎么解决?
...全文
892 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
fytx0113 2011-07-08
  • 打赏
  • 举报
回复
后来换了方案,没用到spans1[i].title=spans2[i].innerHTML了,就好了
sunlei638 2011-06-25
  • 打赏
  • 举报
回复
ajax应该可以把。
fytx0113 2011-06-25
  • 打赏
  • 举报
回复
经过测试发现为 spans1[i].title=spans2[i].innerHTML;的问题。
不加这句的时候就可以正常刷新,加了之后就只刷新一次就不刷了,不知道有什么方法可以解决?
  • 打赏
  • 举报
回复
最好是AJAX
fytx0113 2011-06-24
  • 打赏
  • 举报
回复
我做了个定时刷新:

<script type="text/javascript">
function getonlinenum(){
var id = "<%=tabId%>";
url="test1?tabId="+id+"×tamp="+new Date().getTime();//XMLHttpRequest做ajax请求链接加时间戳,避免浏览器缓存
var objXMLHTTP;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest){ //Mozilla,IE7+,Firefox,Chrome,Opera,Safari浏览器
objXMLHTTP = new XMLHttpRequest();
if (objXMLHTTP.overrideMimeType){//设置MiME类别,针对某些特定版本的mozillar浏览器的BUG进行修正
objXMLHTTP.overrideMimeType('text/xml');
}
}
else if(window.ActiveXObject){ //IE6,IE5浏览器
try{
objXMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
objXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
}
}
alert(objXMLHTTP);
objXMLHTTP.onreadystatechange=function(){
if (objXMLHTTP.readyState==4 && objXMLHTTP.status==200){
var strReturn=objXMLHTTP.responseText;
online_num.innerHTML=strReturn;
}
}
objXMLHTTP.open( "GET", url,false); //false同步,true异步
objXMLHTTP.send();
jq();
mouseover();
}
</script>

我body里面<body onload="setInterval('getonlinenum()', 5000);">
在getonlinenum()中调用了上面红色部分mouseover()之后,就只会刷新一次就不刷了。
如果不调用mouseover(),就会每5秒刷新一次,有谁知道原因啊?
我mouseover()方法及mouseover()要调用的方法为:

<script type="text/javascript">
//定义一个带参数的函数,解决动态绑定闭包问题用到的函数
function tt(id,event) {
this.trc = function() {
rc(id,event); //调用相应函数
}
}

function mouseover() {
document.getElementById("div2").style.display="none";
//var table1=document.getElementsByTagName("table")[0];
var table2=document.getElementsByTagName("table")[1];
//var tspans=table1.getElementsByTagName("span");
var spans1=document.getElementsByTagName("span");
var spans2=table2.getElementsByTagName("span");

for(var i=0;i<spans1.length;i++) {
spans1[i].title=spans2[i].innerHTML;
var tid = spans1[i].id;
var col = new tt(tid,event); //解决闭包问题,new一个新的函数类
spans1[i].oncontextmenu = col.trc; //触发鼠标右键事件
}
}
</script>
<script type="text/javascript">
function rc(id,e) {
e = window.event?window.event:e;
var wd = Ext.create('Ext.window.Window', {
frameHeader : false,
modal: true,
floating : true,
//plain : true,
width: 385,
autoHeight: true,
//layout: 'fit',
items: [{autoLoad:{url:"testRC?sid=" + id,scripts:true}}]
})
wd.showAt([e.clientX,e.clientY]);
}
</script>
kai27ks 2011-06-22
  • 打赏
  • 举报
回复
用JS做个定时器。调用AJAX方法。AJAX网上例子很多啊。建议你用JQUERY框架
fytx0113 2011-06-22
  • 打赏
  • 举报
回复
没人帮忙解决一下。。。。。
fytx0113 2011-06-21
  • 打赏
  • 举报
回复
自己顶一下
fytx0113 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 qq14017152 的回复:]

ajax
[/Quote]
不会ajax
qq14017152 2011-06-21
  • 打赏
  • 举报
回复
ajax
fytx0113 2011-06-21
  • 打赏
  • 举报
回复
晕,没人来帮我解决哈。
licip 2011-06-19
  • 打赏
  • 举报
回复
如非你用ajax,要不然,肯定是有闪烁的。
fytx0113 2011-06-19
  • 打赏
  • 举报
回复
fytx0113 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wodaoliyuzhaogongzuo 的回复:]

你的右侧iframe要显示什么内容?
[/Quote]

右侧显示的为与左侧目录树节点下包含的相对应的内容
例如:
  • 打赏
  • 举报
回复
你的右侧iframe要显示什么内容?
fytx0113 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 licip 的回复:]

如非你用ajax,要不然,肯定是有闪烁的。
[/Quote]
ajax怎么弄?不会。

81,092

社区成员

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

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