Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2012, 16:30   #1
siyogi
Новичок
Джуниор
 
Регистрация: 09.11.2012
Сообщений: 1
По умолчанию JavaScript и расположение окна предварительного просмотра(QuickView)

Добрый день!

Моя задача расположить окно предварительного просмотра(QuickView, QW) рядом с курсором и заставить его менять положение в зависимости от позиции мышки в браузере. По умолчанию окно отображается под курсором, но если мышь расположена очень низко и QuickView не помещается, то оно отображается над курсором. В целом, код работает. Но возникают некоторые проблемы при прокручивании страницы. В частности, кода я прокручиваю вниз, то все в порядке и QW все время находится в положенном месте(рядом с курсом), но при прокручивании вверх эта функция работает только до тех пор, пока я не достигаю самого верха страницы - тогда окно отображается где-то в стороне(внизу). Возможно, что-то я делаю не так или не все учтено при построении кода. Может, кто-нибудь знающий укажет на недочет?

Dummy code:
Код HTML:
function UpdateCursorPosition(e){ cX = e.pageX; cY = e.pageY;}
function UpdateCursorPositionDocAll(e){ cX = event.clientX; cY = event.clientY;}
if(document.all) { document.onmousemove = UpdateCursorPositionDocAll; }
else { document.onmousemove = UpdateCursorPosition; }
function AssignPosition(d) {

	if(self.pageYOffset) {
		rX = self.pageXOffset;
		rY = self.pageYOffset;
		}
	else if(document.documentElement && document.documentElement.scrollTop) {
		rX = document.documentElement.scrollLeft;
		rY = document.documentElement.scrollTop;
		}
	else if(document.body && document.body.scrollTop) {
		rX = document.body.scrollLeft;
		rY = document.body.scrollTop;
		}

	if(document.documentElement.clientWidth || document.documentElement.clientHeight){
  	  	myWidth = document.documentElement.clientWidth;
  	  	myHeight = document.documentElement.clientHeight;
  	  	}
  	else if(document.body.clientWidth || document.body.clientHeight){
  	  	myWidth = document.body.clientWidth;
  	  	myHeight = document.body.clientHeight;
  	  	}

	if(document.all) {
		cX += rX; 
		cY += rY;
		}
	

	var divHeight = d.style.height.replace(/px/, "");
	divHeight = parseInt(divHeight);
	
	if(cY>((myHeight-divHeight)+rY))
	{
		cY = cY - divHeight;
		d.style.left = (cX+50) + "px";
		d.style.top = (cY-10) + "px";
	}
	else
	{
		d.style.left = (cX+50) + "px";
		d.style.top = (cY-10) + "px";
	}
}
siyogi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие "открыто окно предварительного просмотра" tae1980 Microsoft Office Excel 8 03.03.2019 14:56
верстка предварительного просмотра не обновляется (ДЛЕ 9.5) MILLIONERR WordPress и другие CMS 0 20.02.2012 03:00
Как сделать неактивной кнопку печати в окне предварительного просмотра PSZ Microsoft Office Excel 0 05.11.2010 15:29
Вывод текста на канву предварительного просмотра печати. Moly Общие вопросы Delphi 0 29.09.2009 17:31
Окно предварительного просмотра VladimirVB Компоненты Delphi 3 11.05.2009 08:42