Firefox 下AJAX运行不正常 求高人帮忙修改(解决立马结贴)

wang520d 2008-01-15 11:58:16
请分别用IE浏览器跟Firefox浏览器打开下面的地址
http://www.itzhiling.com/au/opt.htm

你就可以看到效果:该地址在Firefox下面打开后 AJAX查询不会因为有有提示窗口而停止

下面是代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="ajax.js"></script>
<title>Auditing</title>
<style>
*{
font-size:16px;

}
#au{
position: absolute; width:10px; height:10px; z-index:5;
left:0px;top:0px;
display:none;
border:#3399ff 3px solid;
background-image:url('blog_line.gif');
}

</style>

</head>

<body>
操作员页面

<div id="tip"></div>
<script>

//查询间隔时间(秒)
var counter=20;
var showed=false;
getContent('st.htm');

//
window.setInterval("query()",1000);

function query(){
if(showed) return ;
counter--;
document.getElementById("tip").innerHTML="Ajax查询将于"+counter+"秒后发出...";
if(counter<=0){
getContent('st.htm');
window.setTimeout("showMsg()",600);
counter=20;
document.getElementById("tip").innerHTML="Ajax查询已经发送!";
}
}

function showMsg(){
if((str!="") && confirm("有新用户 "+str+" 注册,现在立即审核吗?")){
showed=true;
var obj=document.getElementById("au");
obj.style.display="inline";
obj.style.left="0px";
obj.style.width=document.body.offsetWidth-30;
obj.style.height=document.body.offsetHeight-30;
document.getElementById("au2").src="au.aspx";
}
}

function hideDiv(nID){
document.getElementById("au").style.display="none";
showed=false;
getContent('st.htm');
}

</script>
<div id="au" ><a href="javascript:hideDiv('au')">关闭审核页面</a>
<iframe name="au2" id="au2" width="100%" height="100%" marginwidth="1" marginheight="1" border="0" frameborder="0"></iframe>
</div>

</body>

</html>


ajax.js

var xmlhttp=initxmlhttp();
var str;
function initxmlhttp( )
{
var xmlhttp_request = false;
try
{
if (window.ActiveXObject)
{
for (var i = 5; i; i--)
{
try
{
if (i == 2)
{
xmlhttp_request = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP." + i + ".0");
xmlhttp_request.setRequestHeader("Content-Type", "text/xml");
xmlhttp_request.setRequestHeader("Content-Type","gb2312");
}
break;
}
catch (e)
{
alert("catch")
xmlhttp_request = false;
}
}
}
else if (window.XMLHttpRequest)
{
xmlhttp_request = new XMLHttpRequest();
if (xmlhttp_request.overrideMimeType)
{
xmlhttp_request.overrideMimeType('text/xml');
}
}
}
catch (e)
{
xmlhttp_request = false;
}
return xmlhttp_request;
}


function getContent(url){
url=url+"?"+new Date();
//alert(url);
//document.getElementById(div_ID).innerHTML="发送查询请求...";
xmlhttp.open("GET",url,true);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
//alert(xmlhttp.responseText);
str=xmlhttp.responseText;
//document.getElementById(div_ID).innerHTML="查询完成!";
return xmlhttp.responseText;
}else{
return "0";
}
}
xmlhttp.send(null);
}
...全文
121 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang520d 2008-01-16
  • 打赏
  • 举报
回复
上楼的说的很有道理 可是我该这么改代码呢?
我要实现的就是 用AJAX定时访问某个HTM页面。。。

请分别用IE浏览器跟Firefox浏览器打开下面的地址
http://www.itzhiling.com/au/opt.htm

你就可以看到效果:问题:该地址在Firefox下面打开后,AJAX查询不会因为有有提示窗口而停止
wang520d 2008-01-15
  • 打赏
  • 举报
回复
高手还米有吃完饭吗?
shiweiwei1997 2008-01-15
  • 打赏
  • 举报
回复
看不懂你要实现什么功能,也不知道你要解决什么问题。
不过你这段代码肯定会有问题:
window.setInterval("query()",1000);

function query(){
if(showed) return ;
counter--;
document.getElementById("tip").innerHTML="Ajax查询将于"+counter+"秒后发出...";
if(counter <=0){
getContent('st.htm');
window.setTimeout("showMsg()",600);
counter=20;
document.getElementById("tip").innerHTML="Ajax查询已经发送!";
}
}

每隔1秒执行一次query函数,里面的getContent用了异步请求,返回的时间不确定,有可能小于600ms,也可能大于600ms,所以在showMsg函数里判断str是否为空的结果也不确定。
对于showed变量的判断,同样存在不确定因素。

wang520d 2008-01-15
  • 打赏
  • 举报
回复
晕了 一个这样的问题发在AJAX版没有人解答
wang520d 2008-01-15
  • 打赏
  • 举报
回复
ajax 版没有人能解决吗?

52,797

社区成员

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

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