我现在代码如下:但是在加载页面的时候StopThePage()就被调用了,不应该是关闭的时候才会调用吗?求解    
window.onload = function () {
        window.onkeydown = keyDown;//js获取按键keycode值
        
    }
        function keyDown(event){
            var code = event.which;
            //屏蔽 alt+ 方向键 ←     //屏蔽 alt+ 方向键 →
            if ((code.altkey) && ((code == 37) || (code == 39))) {
                return false;
                event.preventdefault();
            }
            //屏蔽f5
            if (code == 116 || code == 8) {
                code = 0;
                return false;
                event.preventdefault();
            }
            //屏蔽 ctrl+r
            if ((code.ctrlkey) && (code == 82)) {
                return false;
                event.preventdefault();
            }
            //屏蔽 shift+f10
            if ((code.shiftkey) && (code == 121)) {
                return false;
                event.preventdefault();
            }
        }    window.onbeforeunload = onbeforeunload_handler;
    function onbeforeunload_handler() {
        var a="<%=StopThePage()%>";
        alert("关闭");
        var warning = "请签退后离开本页面";
        return warning;
    }

解决方案 »

  1.   

    你建一个div div里放上你的那段<%%>里的内容  display设为none
    当执行beforunload时将这个div的display设为block试试
      

  2.   

    不是很明白你的意思,你是说在div中用一个事件来触发StopThePage()吗?而且这样做的意义在哪?我是新手,请多多包涵
      

  3.   

    原来是这样,受教了。我这个方法里是修改数据库的代码,那只能写在脚本里吗?这样岂不是很不安全?动态用ajax发送请求执行你的服务器端代码,注意onbeforeunload中的ajax只能用同步的,异步的ajax可能会被卸载掉window.open可能被拦击
      

  4.   

    原来是这样,受教了。我这个方法里是修改数据库的代码,那只能写在脚本里吗?这样岂不是很不安全?动态用ajax发送请求执行你的服务器端代码,注意onbeforeunload中的ajax只能用同步的,异步的ajax可能会被卸载掉window.open可能被拦击
    ajax还完全不了解啊,而且ajax不就是异步的javascript和Xml吗?同步的话是什么概念?您有时间的话能否给我写段代码
      

  5.   

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script>
        window.onbeforeunload = onbeforeunload_handler;
        function onbeforeunload_handler() {
            //var a = "<%=StopThePage()%>";
            var a;
            $.ajax({ async: false, url: '你的动态页地址',cache:false, complete: function (xhr) {a=xhr.responseText } });
            alert("关闭");
            var warning = "请签退后离开本页面";
            return warning;
        } 
           
    </script>导入jquery,基础的ajax就不写了。。有需要自己去了解
      

  6.   

    不是很明白你的意思,你是说在div中用一个事件来触发StopThePage()吗?而且这样做的意义在哪?我是新手,请多多包涵
    任何客户端调用服务端代码都必须通讯<%%>的方式不是调用服务端代码
    先弄明白什么客户端,什么是服务端,客户端即浏览器,服务端即服务器,两者根本不是同一台电脑,可能相隔万里,客户端要调用服务端代码,必须通讯,哪里是随便想调就调的?<%%>的写法称为动态页,里面的代码是服务端生成页面代码时执行的,那时候浏览器中页面根本还未生成,哪里说得上是js调用服务端代码?你可以查看源文件,看看"<%=StopThePage()%>"到达页面究竟是什么
      

  7.   

    不是很明白你的意思,你是说在div中用一个事件来触发StopThePage()吗?而且这样做的意义在哪?我是新手,请多多包涵
    任何客户端调用服务端代码都必须通讯<%%>的方式不是调用服务端代码
    先弄明白什么客户端,什么是服务端,客户端即浏览器,服务端即服务器,两者根本不是同一台电脑,可能相隔万里,客户端要调用服务端代码,必须通讯,哪里是随便想调就调的?<%%>的写法称为动态页,里面的代码是服务端生成页面代码时执行的,那时候浏览器中页面根本还未生成,哪里说得上是js调用服务端代码?你可以查看源文件,看看"<%=StopThePage()%>"到达页面究竟是什么
    修改数据库的,我是想实现页面关闭的时候更改数据库中的状态值。
      

  8.   

    不是很明白你的意思,你是说在div中用一个事件来触发StopThePage()吗?而且这样做的意义在哪?我是新手,请多多包涵
    任何客户端调用服务端代码都必须通讯<%%>的方式不是调用服务端代码
    先弄明白什么客户端,什么是服务端,客户端即浏览器,服务端即服务器,两者根本不是同一台电脑,可能相隔万里,客户端要调用服务端代码,必须通讯,哪里是随便想调就调的?<%%>的写法称为动态页,里面的代码是服务端生成页面代码时执行的,那时候浏览器中页面根本还未生成,哪里说得上是js调用服务端代码?你可以查看源文件,看看"<%=StopThePage()%>"到达页面究竟是什么
    修改数据库的,我是想实现页面关闭的时候更改数据库中的状态值。
    7楼方法即可
    window.onbeforeunload = function(){
       $.ajax({
           async: false,
           data: {a:x,b:x},//参数
           url: '接口地址'
       });
    }写一个ajax接口,用于修改数据库,页面关闭时调用即可