高分,无刷新情况下弹出窗口怎么解决~

asilas 2004-01-17 11:21:27
最近做了一个无刷新的页面A.asp

页面中有一个<div id=XXX></div>

用XMLHTTP隔一段时间去操作下个文件B.asp

如果有值,就返回到<div id=XXX></div>里面显示出来

问题是:

我希望可以同时弹出一个窗口提示用户,但是用window.onload等是不行的.

我想请教一下怎么可以实现
...全文
65 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
asilas 2004-01-18
  • 打赏
  • 举报
回复
SailorDreamer(Dreamer)

你的方法是全页刷新,如果当页面加载数据量大的时候,这个方法不好

我用的是局部刷新,只刷新我需要修改的部分,这样页面是无刷新感的
SailorDreamer 2004-01-18
  • 打赏
  • 举报
回复
下面是我写的一段测试的代码,
每隔3秒刷新一次
通过"gotMsg"的value来判断是否要弹出窗口,
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="refresh" content="3">
<title></title>
<script language="javascript">
function loadit()
{
if (document.all.gotMsg.value==1)
{
window.open("test.asp","test","scrollbars=no,menubar=no,location=no,toolbar=no,resizable=no,status=no,titlebar=no,width=640,height=419,resizable=yes");
}
}</script>
</head>
<body onLoad="loadit()">
<input type="hidden" id="gotMsg" value="<%=1%>">
</body>
</html>
asilas 2004-01-18
  • 打赏
  • 举报
回复
我顶
asilas 2004-01-18
  • 打赏
  • 举报
回复
windancer(风精灵)

返回的不是数字,'sms_getmsg.asp'是进行一个操作,读取数字,但是返回的是一句话
cbug 2004-01-18
  • 打赏
  • 举报
回复
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.Open("GET",URL, false);
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) {
XXX.innerHTML = ""
window.open();
}
}
windancer 2004-01-18
  • 打赏
  • 举报
回复
这样不行吗:
var re=getXML('sms_getmsg.asp'+'?rd='+Math.random());
if(parseInt(re)>0)
{
newsms.innerHTML =re;
window.open(url,name,feather);
}
另外,你不是返回的是数字吗,为什么还用bytes2BSTR函数呢
iamsangster 2004-01-18
  • 打赏
  • 举报
回复
up
SailorDreamer 2004-01-18
  • 打赏
  • 举报
回复
我的意思是把这个页面放到一个隐藏的frame里不就可以了。
用来检测是否有值并弹出窗口,同时也可以在javascript里更新主页面上要更改的内容
x_gn 2004-01-17
  • 打赏
  • 举报
回复
gz!
紫郢剑侠 2004-01-17
  • 打赏
  • 举报
回复
学习...
关注...
asilas 2004-01-17
  • 打赏
  • 举报
回复
这是我的无刷新代码,在sms_getmsg.asp里面,我需要得到用户的消息条数,如果大于0,那么就希望弹出一个窗口.

大家帮帮忙吧,谢谢了

<script language="vbScript">
Function bytes2BSTR(vIn)
Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode
strReturn = ""

For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next

bytes2BSTR = strReturn
End Function
</script>

<script language="JavaScript">
function getXML(URL) {
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.Open("GET",URL, false);
try {
xmlhttp.Send();
var result = xmlhttp.status;
}
catch(e) {
return(false);
}
if(result==200) {
return(bytes2BSTR(xmlhttp.responseBody));
}
var xmlhttp = null;
}
function sms_update()
{
newsms.innerHTML = getXML('sms_getmsg.asp'+'?rd='+Math.random()); //这里放你的显示数据库的页面的地址
//window.setInterval("sms_update()",20000)
}
window.setInterval("sms_update()",20000)
</script>
<div id=newsms>数据加载中,请稍候····</div>
<script language=javascript>
<!--
sms_update();
-->
</script>
toshiya 2004-01-17
  • 打赏
  • 举报
回复
你是用什么方式写值到div xxx的?innerText?
孟子E章 2004-01-17
  • 打赏
  • 举报
回复
sorry:
if(XMLHTTP.responseText!="")
{
divId.innerText = "ok"
window.open()
}
孟子E章 2004-01-17
  • 打赏
  • 举报
回复
if(XMLHTTP.statustext!="")
{
divId.innerText = "ok"
window.open()
}
孟子E章 2004-01-17
  • 打赏
  • 举报
回复
if(XMLHTTP.status=200)
{
divId.innerText = "ok"
window.open()
}
DwNet 2004-01-17
  • 打赏
  • 举报
回复
returninfo = xmldoc.firstChild.text//返回信息
if (returninfo!="")//表示有值
{
window.open("","","")//打开窗口
}
//是这个意思吗?
gucs 2004-01-17
  • 打赏
  • 举报
回复
既然是使用xmlhttp隔一时间去操作b.asp,为何不对结果进行分析,来决定是否弹出提示窗口呢?
皓天星辰 2004-01-17
  • 打赏
  • 举报
回复
因为通过innerHTML或outerHTML语句写上去的脚本事件有许多不能执行,你可通过在页面里加入一个隐藏的Iframe来弹出新窗口
asilas 2004-01-17
  • 打赏
  • 举报
回复
SailorDreamer(Dreamer)
我已经在上面把我的代码帖出来,你的关于弹出窗口的方法可能不行哟
SailorDreamer 2004-01-17
  • 打赏
  • 举报
回复
在服务器脚本里调用xmlhttp就可以了吧,而且只需要服务器端安装msxml组件就可以了
在刷新页面中再response.write一个弹出窗口的脚本。
不过不知道对服务器的资源占用情况。
仅供参考
加载更多回复(4)

87,910

社区成员

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

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