js相容所有瀏覽器的pageX和pageY屬性
標題中的兩個屬性具有一定的瀏覽器相容性問題。
不出所料,此相容性問題是由IE9以下瀏覽器導致的。
但是由於考慮到低版本的IE瀏覽器使用者尚多,所以本章節介紹一下如何實現相容所有瀏覽器的pageX和pageY。
jQuery的相容方式如下:
[JavaScript] 純文字檢視 複製程式碼// Calculate pageX/Y if missing and clientX/Y available if ( event.pageX == null && original.clientX != null ) { eventDoc = event.target.ownerDocument || document; doc = eventDoc.documentElement; body = eventDoc.body; event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft||body&&body.clientLeft || 0 ); event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); }
其實簡單的實現方式就是滑鼠相對於瀏覽器視口的偏移加上文件的滾動條隱藏的高度減去文件的clientTop。
程式碼如下:
[JavaScript] 純文字檢視 複製程式碼var pageY = event.clientY +document.documentElement. scrollTop-document.documentElement.clientTop
為何要減去document.documentElement.clientTop
這是IE8之下瀏覽器特有的文件的偏移,即使設定html,body的padding和margin為0也不會影響其值。
在iE7下測試得到:
[JavaScript] 純文字檢視 複製程式碼document.documentElement.clientTop//2px document.documentElement.clientLeft //2px document.bocy.clientTop//0px document.body.clientLeft//0px
相關文章
- Element屬性方法的瀏覽器相容性概覽瀏覽器
- 原生js如何建立相容所有瀏覽器的xmlhttp物件JS瀏覽器XMLHTTP物件
- js相容所有瀏覽器的事件繫結程式碼JS瀏覽器事件
- 相容所有瀏覽器的阻止事件冒泡js程式碼瀏覽器事件JS
- forEach()相容所有瀏覽器瀏覽器
- 相容所有瀏覽器的js滑鼠中鍵滾動事件瀏覽器JS事件
- 相容所有瀏覽器的placeholder效果瀏覽器
- 相容所有瀏覽器的getElementsByClassName()函式瀏覽器函式
- 瀏覽器相容性瀏覽器
- 相容所有瀏覽器的圓角出效果瀏覽器
- 相容所有瀏覽器的陣列indexOf()方法瀏覽器陣列Index
- 相容所有瀏覽器的DOMContentLoaded事件瀏覽器事件
- 相容所有瀏覽器js設定元素透明度效果瀏覽器JS
- javascript相容火狐等各瀏覽器的innerText屬性程式碼JavaScript瀏覽器
- 相容各個瀏覽器的scrolltop屬性簡單介紹瀏覽器
- js獲取瀏覽器視窗屬性JS瀏覽器
- 相容所有瀏覽器array物件indexOf()方法瀏覽器物件Index
- 相容所有瀏覽器的對聯廣告程式碼瀏覽器
- 相容所有瀏覽器的阻止事件冒泡程式碼瀏覽器事件
- 相容所有瀏覽器的阻止事件冒泡封裝瀏覽器事件封裝
- 相容所有瀏覽器的progress程式碼例項瀏覽器
- js實現的相容所有瀏覽器的滑鼠中鍵滾動事件JS瀏覽器事件
- 常用的瀏覽器私有屬性瀏覽器
- 相容所有瀏覽器的圖片上傳本地預覽效果瀏覽器
- CSS瀏覽器相容性的4個解決方案:瀏覽器CSS樣式初始化、瀏覽器私有屬性,CSS hack語法和自動化外掛CSS瀏覽器
- js相容所有主流瀏覽器建立XMLhttpRequest物件例項程式碼JS瀏覽器XMLHTTP物件
- 相容所有瀏覽器的模糊效果程式碼例項瀏覽器
- js相容各個瀏覽器的事件物件JS瀏覽器事件物件
- edge瀏覽器相容性設定在哪 新版edge瀏覽器相容模式怎麼弄瀏覽器模式
- 相容所有瀏覽器的點選複製黏貼效果瀏覽器
- 相容所有瀏覽器的獲取事件源物件程式碼瀏覽器事件物件
- 相容所有瀏覽器的display:inline-block效果瀏覽器inlineBloC
- 相容所有瀏覽器的密碼框輸入提示效果瀏覽器密碼
- 相容所有瀏覽器的nextSibling瀏覽器
- 瀏覽器/元素尺寸相關的屬性瀏覽器
- 滾動滑鼠縮放圖片相容所有瀏覽器瀏覽器
- JS複製內容到剪貼簿(相容FF/Chrome/Safari所有瀏覽器)JSChrome瀏覽器
- IE瀏覽器相容瀏覽器