2014-12-29 8 views
0

Мой вопрос прямо. Есть ли способ обнаружить, что прокрутка страницы связана с прокруткой javascript или мыши. Мне действительно нужно определить разницу.Scroll Diffrence

Есть ли кто-нибудь, кто может мне помочь, чтобы выяснить разницу между свитком, сделанную мышью пользователь или это было связанно с JQuery или Java Script прокрутки события

Я работаю на приложении просмотра совместно, поэтому происходит передача событий между несколькими пользователями. Я могу управлять всеми событиями, кроме прокрутки. Он позволяет бесконечной прокрутке системы при записи прокрутки из agent.html. вы можете увидеть приложение, открыв URLs 182.71.103.93/screen2/client23122014.html, а затем 182.71.103.93/job_tree

+0

Слушайте mousescrolls ... – Teemu

+0

Я работаю, выиграл совместное приложение для просмотра, поэтому есть передача событий между несколькими пользователями. Я могу управлять всеми событиями, кроме прокрутки. Он позволяет бесконечной прокрутке системы. вы можете увидеть приложение, открыв 182.71.103.93/screen2/client23122014.html, а затем 182.71.103.93/job_tree –

+0

Я хотел бы также обратить ваше внимание на этот вопрос http://stackoverflow.com/questions/27653703/socket- io-node-js-mouse-tracking-as-soon-as-it-stops –

ответ

0

ответа дать на Termhn был достаточно хорош, но если кто-то застрял в подобную ситуацию, как мой, то вы можете использовать глобальное JavaScript переменной

я сделал это таким образом,

Для Клиент/пользователь сторона

var emit_scroll_event=true; 

socket.on('agentwindowscroll',function (msg){emit_scroll_event=false; jQuery(document).scrollTop(msg); }); 

//window scroll logic goes here 
jQuery(document).scroll(function() 
{ 
    var scrollFromTop=jQuery(document).scrollTop(); 
    if(emit_scroll_event) 
    { 
    socket.emit('windowscroll', scrollFromTop); 
    } 
    emit_scroll_event=true; 
}); 

Для стороны агента можно использовать аналогичный код

var emit_scroll_event=true; 
//agent window scroll logic goes here 
jQuery(document).scroll(function() 
{ 
    var scrollFromTop=jQuery(document).scrollTop(); 
    if(emit_scroll_event) 
    { 
    socket.emit('agentwindowscroll', scrollFromTop); 
    } 
    emit_scroll_event=true; 
}); 
//responding to client scroll 
    socket.on('windowscroll',function (msg){emit_scroll_event=false; jQuery(document).scrollTop(msg); }); 

Примечание: это не весь код. Это только часть кода, который я использовал, который помог мне разобраться в моей проблеме. Это не для нормального javascript. Он используется с узлом js с модулем Scoket.io

1

Не совсем то, что вы просите, но это будет обнаружить событие колесика мыши и, следовательно, если это не событие мыши, это вызвано JS. Вы можете использовать событие «mousewheel» («DOMMouseScroll» в Firefox) в JS. Пример:

// Chrome/Safari/Opera/New IE 
$('html','body').addEventListener("mousewheel", MouseWheelHandler, false); 

// Firefox 
$('html','body').addEventListener("DOMMouseScroll", MouseWheelHandler, false); 

// Old IE 
$('html','body').addEventListener("onmousewheel", MouseWheelHandler, false); 

var MouseWheelHandler = function(e) { 
    var e = window.event || e; //IE support 
    var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail))); 

    // Do whatever with the delta value 
} 
+0

Ваш ответ достаточно близко, но что делать, если пользователь прокручивает страницу, перетаскивая страницу или скроллер браузера –

+0

Я работаю, выиграл приложение для совместной работы , поэтому происходит передача событий между несколькими пользователями. Я могу управлять всеми событиями, кроме прокрутки. Он позволяет бесконечной прокрутке системы. вы можете увидеть приложение, открыв http://182.71.103.93/screen2/client23122014.html, а затем http://182.71.103.93/job_tree –

+0

Хм интересная проблема. Вы можете попробовать это решение; он похож на мой, но более полный http://stackoverflow.com/questions/2834667/how-can-i-differentiate-a-manual-scroll-via-mousewheel-scrollbar-from-a-javasc – Termhn

Смежные вопросы