方法1基本无解,confirm()一类的东东根本就是聋子的耳朵。
方法2可以在提示以后用AJAX处理交卷的善后工作
<script>
function window.onbeforeunload() { 
  //改变clientX,clientY的判断,也可以检测到用户通过任务栏右键关闭,自己摸索一下具体参数
  if (event.clientX>document.body.clientWidth && event.clientY <0 ||event.altKey) 
      //点击了取消,会留在页面,这个时候让用户自己继续答卷
   window.event.returnValue="\n\n\n确定交卷吗?如果尚未完成答卷,请点击[取消]。\n\n\n"; 
      //保险起见,用AJAX将该保存的数据送到后台暂时保存。
      //无论用户点了确定还是取消这里都执行的
}
</script>

解决方案 »

  1.   

    //无论用户点了确定还是取消这里都执行的 
    ===============
    2楼高手,我刚才测了下,如果这样的话,那也就是说,无论点确定还是取消,那都会进行交卷操作了?(我想要的是只有在确定后才交卷,而取消,不交卷。)而且,我在你写这句话的地方写的:alert("aaa");发现:先弹出个aaa的提示框,然后才是那个确定和取消的框。这是怎么回事儿啊?
      

  2.   

    是的,你只能严重警告用户,未完成答卷必须点[取消],如果他不慎点了确定,那你只好先用AJAX把他的部分答案保存了,等他再打开页面的时候把答过的显示给他。同时数据库加多一个标志字段,是正式交卷还是暂时保存的
      

  3.   

    别去探究alert和returnValue的顺序了,没意义。
    反正到现在我也没有找到好的办法,实现点了[取消]后不执行returnValue下面的程序。如果你找到了务必告诉我,呵呵
      

  4.   

        
    <script language="javascript" type="text/javascript"> 
    function window.onbeforeunload() 

    if (event.clientX>document.body.clientWidth && event.clientY<0||event.altKey) 

    window.event.returnValue="确认交卷??";   
    }    

    </script> 如果抓到确认,Top.location.href="后台处理页";
    在后台处理页写好处理代码或者在unload也可,只不过让用户, 多点一次关闭按钮而已.在后台处理页写:  window.close() 。即我说的:  多点一次关闭按钮!
      

  5.   

    不太清楚你说的这个,不过你在这个方法最后可不可以这么写:
    return false;
    让该方法一直是返回的false的,则不毕执行了.
      

  6.   

    return false 好像也不行吧?我试过了。
      

  7.   

    我已经和你说过了呀,在onbeforeunload里写什么confirm()、return false全白搭,纯粹瞎扯。希望回帖的自己测试一下再发