マウス座標位置やスクロール量など、JavaScriptで何かを実装する際に時々使う
コードを記載してみました。
ご自由にお使いください。
| 画面左上からのマウスX座標 | 画面左上からのマウスY座標 | ||
| DIV(#TARGET)左上からのマウスX座標 | DIV("#TARGET)左上からのマウスY座標 | ||
| ウインドウ横幅 | ウインドウ縦幅 | ||
| スクロール量(X座標) | スクロール量(Y座標) |
window.addEventListener("load", function () {
// Window上のマウス座標を取得する
window.onmousemove = function (e) {
var mouseX, mouseY;
// マルチブラウザ対応のため、引数eventが指定されないブラウザは、
// グローバルなeventオブジェクトを利用する。
if (e) {
mouseX = e.pageX;
mouseY = e.pageY;
} else {
mouseX = event.pageX + document.body.scrollLeft;
mouseY = event.pageY + document.body.scrollTop;
}
// 取得した値を表示する
document.getElementById("mouseX").value = mouseX;
document.getElementById("mouseY").value = mouseY;
}
// ページスクロール量を取得する
window.onscroll = function () {
// マルチブラウザ対応のため、
// 2種類のプロパティから設定されている値を取得する
var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
// 取得した値を画面に表示する
document.getElementById("scrollX").value = scrollX;
document.getElementById("scrollY").value = scrollY;
}
// 特定のDIV要素内でのマウス位置を取得する
document.getElementById("targetDiv").onmousemove = function (e) {
var mouseX, mouseY, offsetX=0, offsetY=0;
var element = this;
// まずは、対象DIV要素が
// 画面上のどの位置にあるかを取得する
while (element) {
offsetX += element.offsetLeft;
offsetY += element.offsetTop;
element = element.offsetParent;
}
// DIV位置を考慮して、
// X,Y座標を計算する
if (e) {
mouseX = e.pageX - offsetX;
mouseY = e.pageY - offsetY;
} else {
mouseX = event.pageX + document.body.scrollLeft - offsetX;
mouseY = event.pageY + document.body.scrollTop - offsetY;
}
// 取得した値を表示する
document.getElementById("divMouseX").value = mouseX;
document.getElementById("divMouseY").value = mouseY;
}
// Windowサイズを取得する
// 画面表示時に取得するのと、
// 画面サイズが変わった時に、ウインドウサイズを再取得する
document.getElementById("windowW").value = window.innerWidth;
document.getElementById("windowH").value = window.innerHeight;
window.onresize = function (e) {
var w = window.innerWidth;
var h = window.innerHeight;
document.getElementById("windowW").value = w;
document.getElementById("windowH").value = h;
}
}