因为通过innerHTML或outerHTML语句写上去的脚本事件有许多不能执行,你可通过在页面里加入一个隐藏的Iframe来弹出新窗口

解决方案 »

  1.   

    既然是使用xmlhttp隔一时间去操作b.asp,为何不对结果进行分析,来决定是否弹出提示窗口呢?
      

  2.   

    returninfo = xmldoc.firstChild.text//返回信息
    if (returninfo!="")//表示有值
    {
        window.open("","","")//打开窗口
    }
    //是这个意思吗?
      

  3.   

    if(XMLHTTP.status=200)
    {
    divId.innerText = "ok"
    window.open()
    }
      

  4.   

    if(XMLHTTP.statustext!="")
    {
    divId.innerText = "ok"
    window.open()
    }
      

  5.   

    sorry:
    if(XMLHTTP.responseText!="")
    {
    divId.innerText = "ok"
    window.open()
    }
      

  6.   

    你是用什么方式写值到div xxx的?innerText?
      

  7.   

    这是我的无刷新代码,在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>
      

  8.   

    两个页面配合一下
    把得到的东西(一个变量)赋给 eval() 执行,
    当然返回过来的字符传要是一些脚本, 比如说 document.write("...");之类的
    那样就可以实现你的问题了提示:XMLHTTP 需要客户端安装组件,
    建议使用 Download Behavior,IE 5就能支持
      

  9.   

    在服务器脚本里调用xmlhttp就可以了吧,而且只需要服务器端安装msxml组件就可以了
    在刷新页面中再response.write一个弹出窗口的脚本。
    不过不知道对服务器的资源占用情况。
    仅供参考
      

  10.   

    SailorDreamer(Dreamer) 
    我已经在上面把我的代码帖出来,你的关于弹出窗口的方法可能不行哟
      

  11.   

    下面是我写的一段测试的代码,
    每隔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>
      

  12.   

    SailorDreamer(Dreamer) 你的方法是全页刷新,如果当页面加载数据量大的时候,这个方法不好我用的是局部刷新,只刷新我需要修改的部分,这样页面是无刷新感的
      

  13.   

    我的意思是把这个页面放到一个隐藏的frame里不就可以了。
    用来检测是否有值并弹出窗口,同时也可以在javascript里更新主页面上要更改的内容
      

  14.   

    这样不行吗:
    var re=getXML('sms_getmsg.asp'+'?rd='+Math.random());
    if(parseInt(re)>0)
    {
       newsms.innerHTML =re;
       window.open(url,name,feather);
    }
    另外,你不是返回的是数字吗,为什么还用bytes2BSTR函数呢
      

  15.   

    var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    xmlHttp.Open("GET",URL, false);
    xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == 4) {
    XXX.innerHTML = ""
    window.open();
    }
    }
      

  16.   

    windancer(风精灵) 返回的不是数字,'sms_getmsg.asp'是进行一个操作,读取数字,但是返回的是一句话