js 获取坐标

这两天没事干写了drag,弄了好久,主要是获取鼠标坐标,因为要兼容FF,所以遇到了不少问题,备忘一下

一、js获取坐标位置

 1.1 首先是event,这个只有IE支持,FF不支持,所以如果FF里要用只能在函数上加多一个参数,例如function move(event),这样就可以在函数里面用event了

 1.2 获取坐标:event.X 和event.Y 这两个只支持IE,取出来值是相对父元素的位置

 1.3 event.pageX 和event.pageY 这两个支持FF,不支持IE,同样取出来的值也是相对父元素的。

 1.4 event.clientX 和event.clientY 支持FF,IE,不包含滚动条,所以要取具体相对浏览器的位置就得加上document.documentElement.scrollLeft

二、JQuery的东东

2.1  取某个ID的元素:$("#Frametop")

2.2  为某个ID添加方法 $("#Frametop").mousemove(move) move要添加的方法,$("#Frametop").mouseup(up)

     jquery事件的一些总结:http://www.cnblogs.com/Clingingboy/archive/2008/02/14/1068908.html

2.3 取消事件绑定 $("#Frametop").unbind()

2.4 获取和设置样式 获取:$("#Frametop").css('align'); 设置 $("#Frametop").css({'align','left'});

2.5 源代码

 

ContractedBlock.gif ExpandedBlockStart.gif Code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    
<head>
        
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        
<title>Untitled Document</title>
        
<link href="style.css" type="text/css" rel="stylesheet" />
        
<script type="text/javascript" src="jquery.js"></script>
        
<script typ="text/javascript" language="JavaScript">
            
var leftpx=0;
            
var toppx=0;
            
var left=0;
            
var tops=0;
            
function AddFrame(txt)
            {
                
            }
            
function Drag(event)
            {    
                
//为Frametop添加事件            
                $("#Frametop").mousemove(Move);
                $(
"#Frametop").mouseup(Release);
                
                $(
"#Frametop").css({'cursor':'move'});
                
var a = $("#Frametop");
                
                
if(!event) event = window.event;
                
                
//取出鼠标距离Frame边界的长度 Firefox
                if(event.pageX||event.pageY)
                {
                    leftpx 
= event.pageX-$("#Frame").css("left").replace('px','');
                    
//alert(event.pageX);
                    toppx = event.pageY-$("#Frame").css("top").replace('px','');                
                }
                
else//ie
                {
                    
if(document.all)
                    {
                        
var box = document.getElementById("Frame").getBoundingClientRect();
                        leftpx 
= event.clientX + document.documentElement.scrollLeft - box.left;
                        toppx 
= event.clientY + document.documentElement.scrollTop+20 - box.top;
                        
//alert(leftpx);
                    }
                    
else
                    {
                        leftpx 
= event.clientX + document.documentElement.scrollLeft - $("#Frame").css("left").replace('px','');
                        toppx 
= event.clientY + document.documentElement.scrollTop - $("#Frame").css("top").replace('px','');
                        alert(toppx);
                    }
                }
                
//捕获事件,ie为setCapture,ff不支持该方法,所以用window.captureEvents
                if(a.setCapture)
                {
                    a.setCapture();
                }
                
else if(window.captureEvents)
                {
                    window.captureEvents(Event.MOUSEMOVE 
| Event.MOUSEUP);
                }

            }
            
//鼠标移动方法
            function Move(event)
            {
                
//定义event
                if(!event) event = window.event;
                
//取出当前鼠标位置,并算出Frame的位置
                if(event.pageX||event.pageY)
                {
                    left 
= event.pageX - leftpx;
                    tops 
= event.pageY - toppx;
                }
                
else//ie
                {
                    alert(
"abc");
                    left 
= event.clientX +  document.documentElement.scrollLeft - leftpx;
                    tops 
= event.clientY+ document.documentElement.scrollTop-toppx;                    
                }
                
//设置样式
                $("#Frame").css({'left':left});
                $(
"#Frame").css({'top':tops});
                
            }
            
//mouseup事件
            function Release()
            {
                
var frametop = $("#Frametop");
                
//释放捕捉,IE为releaseCapture
                if(frametop.releaseCapture)
                {
                    frametop.releaseCapture();    
                }
                
else if(window.captureEvents)
                {
                    window.captureEvents(Event.MOUSEMOVE 
| Event.MOUSEUP);
                    
var d = document;                
                    d.onmousemove 
= null;
                    d.onmouseup 
= null;
                }
                
//取消事件绑定
                frametop.unbind();
                $(
"#Frametop").css({'cursor':'auto'});
            }
        
</script>
        
    
</head>
    
<body>
        
<div id="Main">
            
<div id="Head">
                
<input type="button" value="新建窗口" onclick="AddFrame(sth)" />
            
</div>
            
<div id="Contain">
                
<div id="Frame">
                    
<div id="Frametop" onmousedown="Drag(event)">Title</div>
                    
<div id="FrameContain">
                        
                    
</div>
                
</div>
            
</div>
        
</div>
    
</body>
</html>

 

CSS文件

ContractedBlock.gif ExpandedBlockStart.gif Code
body 
{
    margin
:0;
    padding
:0;
    font-size
:small;    
}

#Main
{
    width
:100%;
}

#Head
{
    width
:100%;
    height
:50px;
    padding-top
:40px;
    border-bottom
:dotted black 1px;
}

#Contain
{
    width
:100%;
}

#Frame
{
    margin-top
:20px;    
    position
:absolute;    
}

#Frametop
{
    display
:block;
    background-color
:#ebffff;
    border
:solid 1px #0c90c4;
    height
:20px;
    width
:250px;    
}

#FrameContain
{
    height
:250px;
    width
:250px;
    border
:solid 1px #0c90c4;
    border-top
:none;    
}

 

开始上班,以后要多点总结才行,嘿嘿~~

转载于:https://www.cnblogs.com/coolkiss/archive/2009/04/02/1428063.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值