JS擷取滑鼠點擊對象

來源:互聯網
上載者:User

問題的提出:

在一個使用者列表中,當點擊使用者時候,彈出這個使用者的詳細資料,怎麼做?當然了,如果你想彈出一個新頁面,那就算求了,就不用看這個,這個時候如果彈出一個新頁面,就是說會向伺服器回傳一次,速度就降低了撒,使用最好是直接彈出一個層,然後在這個層裡面現實這個人的詳細資料。而這個層你不會讓人家固定在一個地方撒?對不對?好,那你就要去擷取你點擊的地方的X,Y座標了,但是這樣不行啊,你得指定一個地方啊,如果亂點把這個層彈出來就惱火了撒,所以,咱們就指定只能在一個按鈕上點擊才會彈出這個層,那麼現在你就要去擷取這個按鈕的ID了,這樣來間接的擷取這個按鈕的X,Y座標,因為如果直接用ClientX與ClientY 的話,也不太美觀,要求是對於一條記錄,在指定位置彈出。

我用的AJAX是ASP.NET AJAX,簡單,首先簡曆一個層,托一個UPDATEPANEL上去,然後再整一個FORMVIEW,當然了,還是稍微美化一下哈,不然有點難看。

順便看看擷取點擊對象的ID,簡單:var ID = event.srcElement.ID就可以了。

然後再去獲得這個對象的絕對座標,怎麼去獲得絕對座標?

JS裡面給我們提供的函數只有offsetTop 喝offsetLeft這樣的東西,但是這個值是指定對象相對於上層控制項的距離,這樣得到的位置不是相對於螢幕的絕對位置

所以我們只能迴圈擷取,知道這個對象為最外層的對象,那才得到了對於螢幕的絕對座標

function   getAbsPoint(ID)   
{   
    var   x   =   ID.offsetLeft,   y   =   ID.offsetTop;   
    while(ID==.offsetParent) 
    { 
       x   +=   ID.offsetLeft;   
       y   +=   ID.offsetTop;
    }

這樣我們就擷取這個指定ID屬性相對於螢幕的絕對座標。

還有一種方法,

function   getAbsPoint(obj)   
{   
   var   x,y;   
   oRect   =   obj.getBoundingClientRect();   
   x=oRect.left;   
   y=oRect.top;    
}

這種方法要簡單些,不過有時候取得的座標值不穩定,原因不曉得,所以我就用的第一種方法,好了

獲得了這個對象的X,Y絕對座標後,後面定位層的位置你就曉得該囊個做了撒?

document.getElementById("div1").style.left = x;

當然了,這個層的position肯定是absolute,不然介面就難看了。

    alert("x:"+x+","+"y:"+y);  

順便整幾個JS常用函數

JS中獲得視窗屬性的方法 

1。獲得螢幕的解析度: 
screen.width 
screen.height 

2。獲得視窗大小: 
document.body.clientWidth 
document.body.clientHeight 

3。獲得視窗大小(包含Border、Scroll等元素) 
document.body.offsetWidth 
document.body.offsetHeight  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.