<script language=javascript>
function window.onbeforeunload()
{
  if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)
  {
    leave();
  }
}
</script>

解决方案 »

  1.   

    请问梅花雨大侠
    if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)这句话
    判断的原理是什么?
      

  2.   

    主要是判断这个事件被触发时的一些特征: 
    event.clientX>document.body.clientWidth&&event.clientY<0 这是你点击X关闭时的特征
    event.altKey 判断你是用 Alt+F4 关闭
    其实这个判断还是很不完善的, 比如最小化时用鼠标点击在关闭时就判断不出来.不过有了这两大判断也就基本能够满足你的要求了
      

  3.   

    用在框架里好像不好使
    <%@ page contentType="text/html;charset=gb2312" language="java" %>
    <html>
    <head>
    <title></title>
    <script  language="JavaScript">
    function window.onbeforeunload()
    {
      if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)
      {
        logout();
      }
    }
    function logout()
    {
    window.open
    ("<%=request.getContextPath()>/logout.jsp","","status=no,width=100,height=100");
    }
    </script>
    </head>
    <frameset rows="82,*,30"   framespacing="0" border="0" frameborder="0" leftmargin="0" topmargin="0">
      <frame name="top" scrolling="no" noresize  src="<%=request.getContextPath()%>/top.jsp" frameborder=1>
      <frameset cols="165,*"  id=testframeset   frameborder=1 >
        <frame name="left" src="<%=request.getContextPath()%>/tree/left.jsp" noresize scrolling="auto" target="main" frameborder=1>
        <frame name="main" src="<%=request.getContextPath()%>/main.jsp" frameborder=1 style="Border-left:none;bordercolordark:#FFFFFF; bordercolorlight:#999999">
      </frameset>
      <frame name="bottom" scrolling="no" noresize  src="<%=request.getContextPath()%>/bottom.jsp" frameborder=1>
      <noframes>
      <body>  <p>此网页使用了框架,但您的浏览器不支持框架。</p>  </body>
      </noframes>
    </frameset>
    </html>
      

  4.   

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title></title>
    <script language="javascript">
    function window.onbeforeunload()
    {
      if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey){
        alert("close")
      }
      else{
        alert("refresh")
      }
    }
    </script>
    </head>
    <frameset rows="80,*" cols="*" frameborder="NO" border="0" framespacing="0">
      <frame src="top.htm" name="topFrame" scrolling="NO" noresize >
      <frameset cols="80,*" framespacing="2" frameborder="yes" border="2" bordercolor="#0000FF">
        <frame src="left.htm" name="leftFrame" scrolling="NO" noresize>
        <frame src="main.htm" name="mainFrame">
      </frameset>
    </frameset>
    <noframes><body>
    </body></noframes>
    </html>
      

  5.   

    因为在框架网页里没有 body 这个标签, 所以 event.clientX>document.body.clientWidth
    这个判断式不能生效, 所以你得改一下:<script language="JavaScript"><!--
    function window.onbeforeunload()
    {
      if(event.clientX>360&&event.clientY<0||event.altKey)
      {
        window.event.returnValue="确定要退出本页吗?";
      }
    }
    //--></script>
    <frameset rows="100, *">
      <frame src=tt.htm>
      <frame src=ttt.htm>
    </frameset>
      

  6.   

    梅花雨大侠你改名了?
    修改后的脚本确实在框架中好使了,但是存在这种情况,即使鼠标在浏览器的外边,按f5刷新也执行  window.event.returnValue="确定要退出本页吗?" 这句话。
    我后来又改了改把框架都改成了iframe也一样。我在把框架改成iframe以后,对javascript增加了一些东西
    var xx = document.body.clientWidth+19
    if(event.clientX>document.body.clientWidth&&event.clientX<=xx&&event.clientY<0||event.altKey){
            window.event.returnValue="确定要退出本页吗?";  }
    这样的话可以限制鼠标的横坐标,但是鼠标的纵坐标还是个问题,因为ie上的工具栏,链接栏等都可能出现或不出现,这样的话,单纯用event.clientY<0就可能造成鼠标在IE的外边并且是上方的时候按f5也执行  window.event.returnValue="确定要退出本页吗?"; 这句话,请问梅大侠,还有没有能将鼠标的纵坐标限制在x的上方的条件。
    另外还有一问题,在框架页中不能用body,那如果现在框架页中得到类似width,height这样的属性是不是不行?