楼主的测试环境是什么?
我在IE6下测试时,无论有没有window.event.returnValue都不响应。
下知道IE7是不是有了处理。如果希望响应,请在鼠标按下的时候使用 obj.setCapture,
在mouseup的时候使用releaseCapture.

解决方案 »

  1.   


    我的是ie6啊,是不是你没有修改我代码里的  window.event.returnValue=false;
    我本来想显示成红色,却变成了这样。
      

  2.   

    window.event.returnValue返回产生事件的按钮的值,如果等于false,就是说这个事件永远不会发生
      

  3.   

    <HTML>
    <head>
    <script language="javascript">
    var oldx;
    var oldy;
    var startx;
    var starty;
    var newx;
    var newy;
    //图片的位置
    var picleft;
    var pictop;
    //图片的高和宽
    var imagehigh;
    var imagewidth;function mapmousedown()
    {    oldx=window.event.clientX+document.body.scrollLeft;
        oldy=window.event.clientY+document.body.scrollTop;        
        startx=parseInt(document.all.mapImage.style.left);
        starty=parseInt(document.all.mapImage.style.top);     window.event.returnValue=false;    
      
    }
       
    function mapmousemove()
    {
        if(window.event.button==1){
            pan(startx,starty,oldx,oldy);
      }
      
       window.event.returnValue=false;
      
    }
    function  mapmouseup()
    {
        
            alert("响应!")
            
            window.event.returnValue=false;
        
    }function pan(sx,sy,ox,oy){//平移move函数
        var Pnewx;
        var Pnewy;
        
        Pnewx = sx + (window.event.clientX - ox);
        Pnewy = sy + (window.event.clientY - oy);
        var imagehigh=parseInt(document.all.mapImage.style.height);
        var imagewidth=parseInt(document.all.mapImage.style.width);
        if (window.event.clientX < imagewidth && window.event.clientY < imagehigh)
        {
            document.all.mapImage.style.left=Pnewx;
            document.all.mapImage.style.top=Pnewy;
        }}</script>
    </head>
    <body><IMG  src="奖牌榜地理分布.bmp" name="mapImage" id="mapImage" style="POSITION:absolute;LEFT:0px;width:300px;height:300px;TOP: 0px" GALLERYIMG="false"  >    <script language="javascript">
         window.onload=function()
         {        
         
             picleft=parseInt(document.all.mapImage.style.left);
             pictop=parseInt(document.all.mapImage.style.top);
             
             imagehigh=parseInt(document.all.mapImage.style.height);
             imagewidth=parseInt(document.all.mapImage.style.width);
            
            document.all.mapImage.onmousemove=mapmousemove;
            document.all.mapImage.onmouseup=mapmouseup;            
            document.all.mapImage.onmousedown=mapmousedown;         }
        </script>
    </body>
    </HTML>
    我前面的写错了,是mapmousedown、mapmousemove和mapmouseup事件里必须都加上window.event.returnValue=false;但是为什么注释掉后,当鼠标移出(0,0,300,300)这个范围后就不响应up事件?
      

  4.   

    其实,真正起作用的只有 mapmousemove 中的那条语句。
    具体内部实现是什么样子的不得而知。加上window.event.returnValue=false; 后事件处理链上的后续处理就不会继续进行。
    因此,猜想不加这条语句的时候,
    后续的处理会打断mapImage的消息处理循环。
    进入到其它对象的消息处理循环。
    从而使mouseup事件为其它对象所捕获。
      

  5.   


    我试验过了的确是这样。那么咱们先撇开这个问题,您就据个例子介绍一下window.event.returnValue=false
    的作用吧。
      

  6.   

    http://www.w3school.com.cn/htmldom/dom_obj_event.asp首先看看这里的介绍。
    其实和别的地方的介绍应该差不多.
    不过这里介绍的知识比较系统.
    因此向你推荐一下.等有时间谈谈关于这个问题我个人的理解.