ব্যবহারকারী স্ক্রোল করছে কিনা তা সনাক্ত করুন


88

যদি ব্যবহারকারী স্ক্রল করছে তবে আমি জাভাস্ক্রিপ্টে কীভাবে সনাক্ত করতে পারি?


না, আমি অন্য একটি ফাংশন থেকে লিখতে চাই if(scolling)if(window.onscroll)একই কি ?
ব্যবহারকারী 1365010

আপনি সেট করতে পারেন scrollingমধ্যে onscroll। (পিএস: না, এটি একই নয়)
রকেট হাজমত

4
ব্যবহারকারী কখনও 'স্ক্রোল করছে না'। কেবলমাত্র একটি স্ক্রোল অ্যাকশন রয়েছে, কোনও স্ক্রোলের অবস্থা নেই।
কেন্ডাল ফ্রে

4
@ ব্যবহারকারী 1365010: ডি'ওহ! আমি এটা ভাবিনি। আপনি ঠিক কি করতে চেষ্টা করছেন? ব্যবহারকারী যদি স্ক্রল করছে তবে আপনার কেন জানতে হবে?
রকেট হাজমত

4
মজাদার. আমি কোনও স্ক্রোল কখনও 'রিবুট' করি নি। বিশদ যত্ন?
কেন্ডাল ফ্রে

উত্তর:


88

এইটা কাজ করে:

window.onscroll = function (e) {  
// called when the window is scrolled.  
} 

সম্পাদনা করুন:

আপনি বলেছেন যে এটি একটি টাইমআইন্টারওয়ালের একটি ফাংশন ..
এটি এরকম করে করার চেষ্টা করুন:

userHasScrolled = false;
window.onscroll = function (e)
{
    userHasScrolled = true;
}

তারপরে আপনার ইন্টারভালের ভিতরে এটি সন্নিবেশ করুন:

if(userHasScrolled)
{
//do your code here
userHasScrolled = false;
}

তবে এটি একটি সেট ইনটার্ভাল মধ্যে একটি ফাংশন!
ব্যবহারকারী 1365010

4
@ ইউজার 1365010: কী? আপনি কি বিষয়ে কথা হয়? প্রশ্নটিতে আপনাকে আরও বিশদ যুক্ত করতে হবে।
রকেট হাজমত 15'12

6
@ ব্যবহারকারী 1365010 এই উত্তরটি (এর মূল অংশে) আপনি সবচেয়ে ভাল করতে পারেন।
ম্যাট বল

# এফওয়াইআই, কনটেইনারটি যখন স্ক্রল করছিল তখন বডি ডাবল স্ক্রোল () কাজ করছে বলে মনে হচ্ছে না, তাই আমি দুজনকেই যুক্ত করেছি,
গণপতি

11

আপনি কেবল আপনার ট্যাগগুলিতে জাভাস্ক্রিপ্ট বলেছেন, সুতরাং @ ওম্পি ড্রাইসন পোস্ট আপনাকে সহায়তা করতে পারে।

আমিও অবদান রাখতে চাই, যাতে আপনার প্রয়োজন হলে jQuery ব্যবহার করার সময় নিম্নলিখিতগুলি ব্যবহার করতে পারেন।

 //Firefox
 $('#elem').bind('DOMMouseScroll', function(e){
     if(e.detail > 0) {
         //scroll down
         console.log('Down');
     }else {
         //scroll up
         console.log('Up');
     }

     //prevent page fom scrolling
     return false;
 });

 //IE, Opera, Safari
 $('#elem').bind('mousewheel', function(e){
     if(e.wheelDelta< 0) {
         //scroll down
         console.log('Down');
     }else {
         //scroll up
         console.log('Up');
     }

     //prevent page fom scrolling
     return false;
 });

আরেকটি উদাহরণ:

$(function(){
    var _top = $(window).scrollTop();
    var _direction;
    $(window).scroll(function(){
        var _cur_top = $(window).scrollTop();
        if(_top < _cur_top)
        {
            _direction = 'down';
        }
        else
        {
            _direction = 'up';
        }
        _top = _cur_top;
        console.log(_direction);
    });
});​

4
JQuery ব্রাউজার পার্থক্য বিমূর্ত করার কথা না? কেন আপনার কাছে বিভিন্ন ব্রাউজারের জন্য পদ্ধতি রয়েছে? কি $('#elem').bind('scroll'যথেষ্ট নয়? সম্পাদনা: কিছু মনে করবেন না, আমি আপনার দ্বিতীয় উদাহরণটি দেখেছি।
রকেট হাজমত

4
প্রতি এখন এবং পরে কিছুটা দেশীয় জাভাস্ক্রিপ্টে কোনও ভুল নেই।
এজিডিএম

মানে না e.originalEvent.wheelDelta || e.originalEvent.detail?
জ্যাকব্রোসদেভ

4
সতর্কতা: এই উত্তরের চাকা ইভেন্টগুলি মানহীন এবং অবমূল্যায়িত। wheelইভেন্টটি ব্যবহার করুন ।
আলেকজান্ডার ও'মারারা

আমি এটি পরীক্ষা করে দেখিনি তবে এমডিএন অনুসারে ডোমমাউসস্ক্রোল বেশিরভাগ ব্রাউজারে ডেভেলপার.মোজিলা.আর.এইজ
ডকস / ওয়েবে / অ্যাভেন্টস / ডমমাউসস্ক্রোল

6
window.addEventListener("scroll",function(){
    window.lastScrollTime = new Date().getTime()
});
function is_scrolling() {
    return window.lastScrollTime && new Date().getTime() < window.lastScrollTime + 500
}

আপনি সর্বশেষ স্ক্রোল ইভেন্টের পরে 500 মিলিসেকেন্ডের সংখ্যায় পরিবর্তন করুন যেখানে আপনি ব্যবহারকারীকে "আর স্ক্রোলিং" হিসাবে বিবেচনা করবেন না।

(এর addEventListenerচেয়ে ভাল onScrollকারণ প্রাক্তন অন্য যে কোনও কোড ব্যবহার করে তা ভালভাবে সহাবস্থান করতে পারে onScroll))


0

চেক করতে একটি বিরতি ব্যবহার করুন

ব্যবহারকারী স্ক্রোল করেছে কিনা তা পরীক্ষা করে চালিয়ে যাওয়ার জন্য আপনি একটি বিরতি সেটআপ করতে পারেন তবে সেই অনুযায়ী কিছু করুন।

মহান থেকে ধার জন Resig মধ্যে তার প্রবন্ধে

উদাহরণ:

    let didScroll = false;

    window.onscroll = () => didScroll = true;

    setInterval(() => {
        if ( didScroll ) {
            didScroll = false;
            console.log('Someone scrolled me!')
        }
    }, 250);

সরাসরি উদাহরণ দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.