Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.06.2012, 23:48
Интересующийся
Отправить личное сообщение для Igoreshka Посмотреть профиль Найти все сообщения от Igoreshka
 
Регистрация: 10.06.2012
Сообщений: 12

Получение кординат - кроссбраузерность
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 осуществляется во второй строчке... В чем может быть проблема?

Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 10.06.2012, 23:54
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

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;
}
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 11.06.2012, 00:07
Интересующийся
Отправить личное сообщение для Igoreshka Посмотреть профиль Найти все сообщения от Igoreshka
 
Регистрация: 10.06.2012
Сообщений: 12

Спасибо, теперь все работает, но хотелось бы понять почему ваш код работает, а мой нет...

Кстати свой код я пытался и так записать:
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;
}

все равно не работало. Ведь фактически у меня код тоже самое что и у вас, только пропущен нюанс, а какой?
Ответить с цитированием
  #4 (permalink)  
Старый 11.06.2012, 00:16
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Igoreshka
все равно не работало. Ведь фактически у меня код тоже самое что и у вас, только пропущен нюанс, а какой?
нет вы не правы, ваш код ничем не схож с моим, даже рядом не стоит. А вся ваша ошибка лишь в том, что вы пытаетесь использовать не существующий объект.
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;
}
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 11.06.2012, 19:15
Интересующийся
Отправить личное сообщение для Igoreshka Посмотреть профиль Найти все сообщения от Igoreshka
 
Регистрация: 10.06.2012
Сообщений: 12

Спасибо, карму я вам добавил за помощь
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в Objective-J отправить запрос на получение RSS ленты? yarutinkv Библиотеки/Тулкиты/Фреймворки 0 05.03.2012 17:00
Чат. Получение текста из флэш потока Кнопикс AJAX и COMET 9 18.11.2011 13:10
Переодическое получение ответа от сервера demoniqus AJAX и COMET 6 22.06.2010 16:09
Получение в JavaScript значений переменных, посланных методом POST Ratibor Redoran Общие вопросы Javascript 5 08.06.2010 16:36
Получение текстового содержимого из всех вложенных DOM EmDmAl Events/DOM/Window 8 02.12.2009 23:38