我想在超時回調中獲得鼠標位置。Javascript:是否可以在事件處理程序之外獲得鼠標位置?
據我所知,這不能直接完成。一個解決方法可能是在document.body上設置一個onmousemove事件,並保存這個位置,稍後提取。然而,這將是相當昂貴的,並不是最乾淨的方法。
我想在超時回調中獲得鼠標位置。Javascript:是否可以在事件處理程序之外獲得鼠標位置?
據我所知,這不能直接完成。一個解決方法可能是在document.body上設置一個onmousemove事件,並保存這個位置,稍後提取。然而,這將是相當昂貴的,並不是最乾淨的方法。
我認爲你必須做同樣的事情@Oli,但如果你使用jQuery,它會更容易。
http://docs.jquery.com/Tutorials:Mouse_Position
<script type="text/javascript">
jQuery(document).ready(function(){
$().mousemove(function(e){
$('#status').html(e.pageX +', '+ e.pageY);
});
})
</script>
直接的答案是否但正如您所說的,您可以將事件附加到所有事項並相應地進行輪詢。它將昂貴的做每個onmousemove實例嚴肅的編程,所以你可能會發現圍繞頁面創建幾個區域和輪詢onmouseover事件更好。
另一種選擇將是(我不知道這是否在所有工作)設定循環超時:
Uberhack但威力工作。
有趣的想法。 – enobrev 2009-01-11 19:48:24
正如你所描述的,最直接的方式做到這一點是設置在身體上的OnMouseMove事件處理程序。它比您想象的要便宜:只需很少的計算就可以存儲座標,並且當鼠標移動時,事件每秒被觸發50到100次。我懷疑一個典型的用戶在瀏覽網頁時不會經常移動鼠標。
以下腳本可幫助計算事件處理程序;在我的機器上,在Firefox中移動鼠標,這爲我的CPU使用率增加了5%到10%。
<script type="text/javascript">
jQuery(document).ready(function(){
var count = 0;
$().mousemove(function(e){ count += 1; });
$().click(function(e){ $('#status').html(count); });
});
</script>
加載任務管理器並在移動鼠標時查看CPU圖形。使用Linux上的Firefox3時,它快速移動時幾乎會消耗整個CPU。基於時間的民意調查(仍然使用大部分代碼)會表現得更好。 – Oli 2009-01-12 10:21:35