有个windows2008的服务器,在这台服务器上ie8测试页面没问题,但是在别的电脑上测试的话会有一个问题,别的电脑上都是ie7,ie6。
代码:window.onbeforeunload = onbeforeunload_handler;   
            window.onunload = onunload_handler;             
            function onbeforeunload_handler(){  
            if(event.clientX>document.body.clientWidth   &&   event.clientY<0||event.altKey)   
              {   
                   if(setMsgFlag)
                    {  
                        var warning="离开页面会自动提交试卷!";                   
                        return warning;
                     }                  
              } 
             else
             {
                setMsgFlag=false;
             }             
            }               
            function onunload_handler(){   
                if(setMsgFlag)
                {
                    SaveValue();
                } 
            }
 function  SaveValue(rowCount)
{
         if(rowCount > 0)
            {
                alert("答卷提交成功!");
                setMsgFlag=false;
                window.close();
                window.open("../testhistory/TestHistorySearch.aspx");         
            }
            else
            {
                alert("答卷提交失败!");
                return;
            }
        }}如果在一个按钮里直接用SaveValue()方法,没问题,window。open可以打开新页面,但是如果点击页面右上角的关闭按钮的话,window。open就不能打开,为什么呢,请大家指教。

解决方案 »

  1.   

    这些代码是不可靠的,建议你不要使用这个方法了
    ajax的方法就不错
      

  2.   

    ie7,ie8应该出问题才对吧,因为这些都是标签浏览器,看看是否应用了弹出窗口阻止功能
      

  3.   

     谢谢孟老大的回复。我用的是ie7和ie8,这个问题只有在在客户端(ie7)访问服务器上(ie8)的网页时才会出现,而且,我在两种情况下调用了SaveValue()方法,一个是在按钮下直接调用,这个没有问题,新窗口直接谈出来了。另一个是在相继触发了window.beforeunload()和    window.unload() 之后再调用SaveValue(),这个时候就不能谈出新窗口了,为什么呢  ,请大侠给小弟指点一下
      

  4.   

    相继触发了window.beforeunload()和    window.unload() 之后再调用SaveValue(),这个时候就不能谈出新窗口了你第一次弹出的窗口关闭了吗?window.open("../testhistory/TestHistorySearch.aspx","_blank");试试, 
      

  5.   

    孟大侠,我第一次弹出的时候关闭了阿 试了试您刚才给的,还是不行。为什么
    <input  type="button" onclick="SaveValue();">这样调用却可以,但是点击了右上角关闭按钮后,触发了window.beforeunload()和    window.unload() 后,就不能用了呢
      

  6.   

    window.open("../testhistory/TestHistorySearch.aspx","name");         
      

  7.   

    经过测试,没有发生你说的问题。测试代码如下:
    测试的时候需要关闭弹出窗口阻止程序。测试环境是ie7,ie8
    <script>
    window.onbeforeunload = onbeforeunload_handler;   
    window.onunload = onunload_handler;             
    function onbeforeunload_handler(){  
    setMsgFlag=true
    }
    function onunload_handler(){   
    if(setMsgFlag)
    {
        SaveValue();

    }
    function  SaveValue(rowCount)
    {
    window.open("http://dotnet.aspx.cc/")
    }
    </script>