Получение кординат - кроссбраузерность
function GetMouseX(e) {
if (e.pageX) return e.pageX;
else if (e.clientX)
return e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
else return null;
}
Данный код не работает в IE 6, хотя как раз проверка на IE осуществляется во второй строчке... В чем может быть проблема? Спасибо |
function GetMouseX(e)
// получить объект событие для IE
e = e || window.event;
// добавить pageX для IE
if ( e.pageX == null && e.clientX != null ) {
var html = document.documentElement;
var body = document.body;
e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0);
}
return e.pageX;
}
function GetMouseY(e)
// получить объект событие для IE
e = e || window.event;
// добавить pageY для IE
if ( e.pageY == null && e.clientY != null ) {
var html = document.documentElement;
var body = document.body;
e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0);
}
return e.pageY;
}
|
Спасибо, теперь все работает, но хотелось бы понять почему ваш код работает, а мой нет...
Кстати свой код я пытался и так записать:
function GetMouseX(e) {
if (window.Event) { document.captureEvents(Event.MOUSEMOVE); return e.pageX;}
else if (e.clientX)
return e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
else return null;
}
все равно не работало. Ведь фактически у меня код тоже самое что и у вас, только пропущен нюанс, а какой? |
Цитата:
function GetMouseX(e) {
if (e.pageX) return e.pageX;
else if (e.clientX) // вот здесь у вас возникает ошибка, так как объект e равен undefined
return e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
else return null;
}
а нужно делать примерно так:
function GetMouseX(e) {
e = e || window.event;
if (e.pageX) return e.pageX;
else if (e.clientX)
return e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
else return null;
}
|
Спасибо, карму я вам добавил за помощь
|
| Часовой пояс GMT +3, время: 06:02. |