JavaScript скрипты
Координаты мыши относительно документа
Поводите мышкой по коду функции ниже и смотрите при этом на строку состояния.
IE5+, Mozilla/Gecko, Opera 7+
function mousePageXY(e)
{
var x = 0, y = 0;
if (!e) e = window.event;
if (e.pageX || e.pageY)
{
x = e.pageX;
y = e.pageY;
}
else if (e.clientX || e.clientY)
{
x = e.clientX +
(document.documentElement.scrollLeft || document.body.scrollLeft) -
document.documentElement.clientLeft;
y = e.clientY +
(document.documentElement.scrollTop || document.body.scrollTop) -
document.documentElement.clientTop;
}
return {"x":x, "y":y};
}
Функция возвращает объект со свойствами x, y, определяющими координаты курсора.
Пример использования:
document.onmousemove = function(e){
var mCur = mousePageXY(e);
window.status = "X:"+mCur.x+" - Y:"+mCur.y;
};
Как узнать координаты мыши (положение курсора мыши) внутри абсолютно позиционированного элемента?
function mouseLayerXY(e)
{
if (!e) {e = window.event; e.target = e.srcElement}
var x = 0;
var y = 0;
if (e.layerX)//Gecko
{
x = e.layerX -
parseInt(getElementComputedStyle(e.target, "border-left-width"));
y = e.layerY -
parseInt(getElementComputedStyle(e.target, "border-top-width"));
}
else if (e.offsetX) //IE, Opera
{
x = e.offsetX;
y = e.offsetY;
}
return {"x":x, "y":y};
}
// Функция для вычисления CSS свойст элементов
function getElementComputedStyle(elem, prop)
{
if (typeof elem!="object") elem = document.getElementById(elem);
// external stylesheet for Mozilla, Opera 7+ and Safari 1.3+
if (document.defaultView && document.defaultView.getComputedStyle)
{
if (prop.match(/[A-Z]/)) {
prop = prop.replace(/([A-Z])/g, "-$1").toLowerCase();
}
return
document.defaultView.getComputedStyle(elem, "").getPropertyValue(prop);
}
// external stylesheet for Explorer and Opera 9
if (elem.currentStyle)
{
var i;
while ((i=prop.indexOf("-"))!=-1) {
prop = prop.substr(0, i) +
prop.substr(i+1,1).toUpperCase() +
prop.substr(i+2);
return elem.currentStyle[prop];
}
return "";
}