दुर्भाग्य से, यह बताने का कोई सीधा तरीका नहीं है।
मैं कहूंगा कि यदि आप अपने ऐप को फिर से डिज़ाइन कर सकते हैं ताकि यह इस प्रकार के प्रवाह पर निर्भर न हो, तो इसके लिए जाएं।
यदि नहीं, तो एक वैकल्पिक हल मैं के बारे में सोच सकते हैं उपयोगकर्ता द्वारा आरंभ किए स्क्रॉल का ट्रैक रखने और जाँच लें कि देखने के लिए कि पुस्तक ब्राउज़र द्वारा या उपयोगकर्ता द्वारा ट्रिगर किया गया है।
यहाँ एक उदाहरण है जो मैंने एक साथ रखा है जो इसे बहुत अच्छी तरह से करता है (उन ब्राउज़रों को छोड़कर जहां jQuery के इतिहास में समस्याएं हैं)।
आपको इसे पूरी तरह से परखने में सक्षम होने के लिए इसे स्थानीय रूप से चलाने की आवश्यकता है (jsFiddle / jsbin अच्छा फिट नहीं है क्योंकि वे सामग्री को iFrame करते हैं)।
यहाँ परीक्षण के मामले हैं जिन्हें मैंने सत्यापित किया है:
- पेज लोड -
userScrollहैfalse
- माउस / कीबोर्ड का उपयोग करते हुए स्क्रॉल करें -
userScrollबन जाता हैtrue
- पेज बॉटम पर जाने के लिए लिंक पर क्लिक करें -
userScrollबन जाता हैfalse
- क्लिक बैक / फॉरवर्ड -
userScrollबन जाता है false;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<script src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="https://raw.github.com/tkyk/jquery-history-plugin/master/jquery.history.js"></script>
</head>
<body>
<span> hello there </span><br/>
<a href="#bottom"> click here to go down </a>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<a name="bottom"> just sitting </a>
</body>
<script type="text/javascript">
var userScroll = false;
function mouseEvent(e) {
userScroll = true;
}
$(function() {
$.history.init(function(hash){
userScroll = false;
});
$(document).keydown(function(e) {
if(e.which == 33
|| e.which == 34
|| e.which == 32
|| e.which == 38
|| e.which == 40
|| (e.ctrlKey && e.which == 36)
|| (e.ctrlKey && e.which == 35)
) {
userScroll = true;
}
});
if(window.addEventListener) {
document.addEventListener('DOMMouseScroll', mouseEvent, false);
}
document.onmousewheel = mouseEvent;
$('a[href*=#]').click(function() {
userScroll = false;
});
$(document).scroll( function(){
console.log('Scroll initiated by ' + (userScroll == true ? "user" : "browser"));
});
});
</script>
</html>
टिप्पणियाँ:
- जब उपयोगकर्ता माउस के साथ स्क्रॉलबार खींचता है तो यह स्क्रॉलिंग को ट्रैक नहीं करता है। इसे कुछ और कोड के साथ जोड़ा जा सकता है, जिसे मैंने आपके लिए एक अभ्यास के रूप में छोड़ दिया है।
event.keyCodes ओएस द्वारा भिन्न हो सकता है, इसलिए आपको उचित रूप से बदलना पड़ सकता है।
उम्मीद है की यह मदद करेगा!