Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скролл перетаскиванием (https://javascript.ru/forum/misc/30262-skroll-peretaskivaniem.html)

bayah 29.07.2012 15:59

Скролл перетаскиванием
 
Мне требуется сделать аналог "руки" в различных программах, например acrobat reader, чтобы при перемещении курсора мыши в нажатом состоянии левой кнопки, страница браузера скролилась вместе с этим перемещением.
Вот такой скрипт. Но работает он жутко коряво. Почему так? Как надо?
Посоветуйте, пожалуйста.


var down = 0;
var x = 0;
var y = 0;
var dx;
var dy;


document.onmousedown = function(e) {
e = e || window.event;
down = 1;
x = e.clientX;
y = e.clientY;

}


document.onmouseup = function(e){
e = e || window.event;
down = 0;

}

document.onmousemove = function(e){
e = e || window.event;
var move_state = document.getElementById('move_state');
var xy = document.getElementById('xy');
if(down == 1){

dx = e.clientX - x;
dy = e.clientY - y;
window.scrollBy(dx, dy);
x=e.clientX;
x=e.clientY;

}else{

}

}

Deff 29.07.2012 16:16

bayah,
Вызывайте функцию не на всём элементе, а ток при наведении-нажатии на конкретный элемент, покольку - брауз вынужден при .onmouseьщму на весь документ - отслеживать постоянно и на всём документе положение курсора
Т.е должен быть drag-and-drop элемент( типо картинка руки) , изначально скрыт, при нажатии на страницу, возникает элемент(элемент возникает только на чистом и нужном пространстве, т.к есть еще и элементы управления, которые нужно тыкать мышью), вот по наведению и нажатию на него, - двигаем и позицию данного элемента и скролл страницы

bayah 30.07.2012 02:20

не совсем понял, почему на конкретном элементе делать обработчик, мне все равно скроллить всю хтмл страницу
я же не перетаскиваю какой-то конкретный элемент, я вообще их не перетаскиваю


Часовой пояс GMT +3, время: 02:31.