在平常的開發中,多多少少會遇到一些與滑鼠座標相關的需求。例如:在行動端的手勢判定、PC端的搖晃拖曳的窗體事件等。那麼你們是否都了解與之相關的Javascript的Event事件屬性呢?
如當我們在點擊事件的時候,彈出目前的座標多少?首先我們要先弄清楚event.pageX、event.clientX及event.screenX之外,還要弄清楚其屬性的一些瀏覽器相容性問題;
在這之前,我們還要弄清楚事件event相容的問題:
1、如當我們在瀏覽器的預設事件的行為,第一個想到的肯定是event.preventDefault()
2、如我們在阻止事件的冒泡的時候,我們會使用event.stopPropagation();
3.當我們在取得事件的目標來源節點的時候,我們想到的是event.target;
但在IE瀏覽器,尤其是IE9以下的瀏覽器,以上都是具有相容性的問題,在這裡我們可以總結出EventUtil的物件來做一些跨瀏覽器的一些事件;
var EventUtil = { addHandler: function (elment, type, handler) { if (element.addEventListener) { element.addEventListener(type, handler, false); } else if (element.attachEvent) { element.attachEvent('on' + type, handler) } else { element['on' + type] = handler; } }, removeHandler: function(element, type, handler) { if (element.removeEventListener) { element.removeEventListener(type, handler, false); } else if (element.detachEvent) { element.detacheEvent('on' + type, handler); } else { element['on' + type] = null; } }, getEvent: function(event) { return event ? event : window.event; }, getTarget: function(event) { return event.target || event.srcElement; }, preventDefault: function(event) { if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } }, stopPropagation: function(event) { if (event.stopPropagation) { event.stopPropagation(); } else { event.cancelBubble = false; } }, };
在上述的跨瀏覽器事件處理完後,感覺這裡還沒有談到與標題相關的東西;
首先:我們先弄清楚上述說的三個pageX、clientX、screenX的關係;
1、pageX:是指鼠标的位置相当于web页面的具体坐标; 2、clientX:是指鼠标的位置相对于浏览器窗口的具体坐标; 3、screenX:则具体是指鼠标位置相对于系统窗口的具体坐标; 其中,pageX可能会大于或等于clientX;可以用这个公式来计算: pageX = clientX + (document.body.scrollLeft || document.documentElement.scrollLeft); 具体的差别可自行脑补出来啦,哈哈。
以上是Javascript事件與滑鼠座標的屬性的詳細內容。更多資訊請關注PHP中文網其他相關文章!