JavaScript Waddo help ekak

Jecob Boman

Well-known member
  • Dec 10, 2013
    1,333
    93
    48
    homagama
    මට පොඩි අවුලක් තියෙනව jquery scroll event එක සම්බන්දව මචං සරල තේරුම් ගන්න මේ පහල සරල කෝඩ් එක බලන්න.

    PHP:
    $("#wrapper").scroll() {
        myFunc();
    }
    
    function myFunc() {
     console.log("hello");
    }

    මචං මේ කෝඩ් එක තියෙන Html page එක ලොඩ් කරල chrome එකේ console එක ඕපන් කරල උබ ස්ක්‍රොල් කරන්න ගත්තොත් එක දිගට ස්ක්‍රොල් කරන තාක් hello කියල Print වෙනවනේ.

    උබ උඩම ඉදල පහල පික්සල් 100ක් ස්ක්‍රොල් කරොත් hello කියල 100ක් ලියවෙනව.

    මට ඕන මචං ඔය scroll event chain එකේ අවසාන event එකේදි විතරක් ඔය myFunc() කියල method එක රන් වෙන්න.

    ඒ කිව්වේ පේජ් එකේ උඩම ඉදල පහලට පික්සල් 100ක් ස්ක්‍රොල් කරොත්. අවාසන එනම් 100 වෙනි event එකේදි විතරක් මේ මෙතඩ් එක රන්වෙන්න මේක කරන්න පුලුවන්ද මචං?

    මම ට්‍රයි කරා.

    PHP:
    $("#wrapper").one("scroll", function() {
        myFunc();
    });

    මේක හරියන්නෑ. මේක රන් වෙන්නේ පලවෙනි scroll event එකේදි. :D

    ලොකු උදව්වක්. මම මේක විසඳගන්න කට්ට කන්නේ දැන් දවස් 2කක ඉදන්. :sorry:
     

    sithija.h

    Well-known member
  • Nov 21, 2008
    9,679
    5,904
    113
    Matara
    උඹ Scroll Event එක Trigger කරන්න යන්නෙ මොන වගේ කන්ට්‍රෝල් එකකද මචං? පේජ් එකේමද එහෙමත් නැත්නම් කන්ට්‍රෝල් එකකද?
     

    Jecob Boman

    Well-known member
  • Dec 10, 2013
    1,333
    93
    48
    homagama
    උඹ Scroll Event එක Trigger කරන්න යන්නෙ මොන වගේ කන්ට්‍රෝල් එකකද මචං? පේජ් එකේමද එහෙමත් නැත්නම් කන්ට්‍රෝල් එකකද?

    නිකන් පේජ් එකේමයි මචං.
     

    sithija.h

    Well-known member
  • Nov 21, 2008
    9,679
    5,904
    113
    Matara
    පේජ් එකේම Scroll Event එක ට්‍රිගර් කරන්න ඕන නම් මේකෙ තියෙන විදියට ට්‍රයි කරල බලන්න මචං


    https://stackoverflow.com/questions/3898130/check-if-a-user-has-scrolled-to-the-bottom/3898152


    එහෙම නැත්නම් කන්ට්‍රෝල් එකක නම් මේක ට්‍රයි කරල බලන්න
    https://www.geeksforgeeks.org/how-to-detect-when-user-scrolls-to-the-bottom-of-a-div/


    කොහොමහරි ඔය වැඩේ කරන්න වෙන්නෙ Formula එකකින් කැල්කියුලේට් කරල වගේ. කෙළින්ම ඉවෙන්ට් එකක් නෑ Scroll Bottom එක අල්ලගන්න :)
     

    Jecob Boman

    Well-known member
  • Dec 10, 2013
    1,333
    93
    48
    homagama
    පේජ් එකේම Scroll Event එක ට්‍රිගර් කරන්න ඕන නම් මේකෙ තියෙන විදියට ට්‍රයි කරල බලන්න මචං


    https://stackoverflow.com/questions/3898130/check-if-a-user-has-scrolled-to-the-bottom/3898152


    එහෙම නැත්නම් කන්ට්‍රෝල් එකක නම් මේක ට්‍රයි කරල බලන්න
    https://www.geeksforgeeks.org/how-to-detect-when-user-scrolls-to-the-bottom-of-a-div/


    කොහොමහරි ඔය වැඩේ කරන්න වෙන්නෙ Formula එකකින් කැල්කියුලේට් කරල වගේ. කෙළින්ම ඉවෙන්ට් එකක් නෑ Scroll Bottom එක අල්ලගන්න :)



    thankyou guys.
     

    Jecob Boman

    Well-known member
  • Dec 10, 2013
    1,333
    93
    48
    homagama
    ආහ් උඹට ඕන යූසර් ස්ක්‍රෝල් කරල ඉවර වුණාම ඉවෙන්ට් එක ගන්න නේද, මම වැරදියට තේරුම් ගත්තෙ ;)


    මේක බලන්න මචං


    https://stackoverflow.com/questions/14035083/jquery-bind-event-on-scroll-stop/14035162

    මම ගොඩක් ඕකෙ ඒව බැලුව මචං. තියෙන සොලුයුෂන්ස් හරි නෑ. ටයම් බේස්ඩ් ඒව හරි යන්නෑ.

    මගේ අවුල තමයි මචං. පේජ් එක යම් දුරක් scroll කරාම පේජ් එකට අලුත් dom node කීපයක් ඇඩ් වෙනව. මේ ඇඩ් වෙන ඒව ඩිටෙක්ට් කරගන්න බැරුව ඉන්නේ. මොකද පේජ් එක රීලෝඩ් වෙන්නෑ ajax වලින් වැඩ කරන්නේ. ඉතින් Load ඉවෙන්ට් එකට අහුවෙන්නෑනේ. page එකේ initial load එකේදි ඒ කෑලි පේජ් එකේ නෑ.
     

    Identity

    Well-known member
  • Aug 15, 2016
    23,138
    18,709
    113
    අදාල නෑනේ
    HTML:
    // Setup isScrolling variable
    var isScrolling;
    
    // Listen for scroll events
    window.addEventListener('scroll', function ( event ) {
    
    	// Clear our timeout throughout the scroll
    	window.clearTimeout( isScrolling );
    
    	// Set a timeout to run after scrolling ends
    	isScrolling = setTimeout(function() {
    
    		// Run the callback
    		console.log( 'Scrolling has stopped.' );
    
    	}, 66);
    
    }, false);
     

    Jecob Boman

    Well-known member
  • Dec 10, 2013
    1,333
    93
    48
    homagama
    HTML:
    // Setup isScrolling variable
    var isScrolling;
    
    // Listen for scroll events
    window.addEventListener('scroll', function ( event ) {
    
    	// Clear our timeout throughout the scroll
    	window.clearTimeout( isScrolling );
    
    	// Set a timeout to run after scrolling ends
    	isScrolling = setTimeout(function() {
    
    		// Run the callback
    		console.log( 'Scrolling has stopped.' );
    
    	}, 66);
    
    }, false);

    time based සොලුයුෂන් එකක් හරියන්නෑ මචං.
     

    Jecob Boman

    Well-known member
  • Dec 10, 2013
    1,333
    93
    48
    homagama

    මේ වගේ කැල්කුයුලේෂන් එකක් කරන්න බැරි එක තමා මචං අවුල. ඔය Header එක පාවෙන එක හැන්ඩ්ල් කරන්නේ වෙනමම ලයිබ්රරි එකකින්. ඔය පාවෙන Header එකේ dom nodes insert වෙන්නේ initial page load එකෙන් පස්සේ. ඉතින් ඒ dom elements ඩිටෙක්ට් කරගන්න තමයි scroll event එක යූස් කරන්නේ. වෙන හොද විදියක් නැද්ද මේකට.

    dom එක වෙනස් වෙනකොට fire වෙන ඉවෙන්ට් එකක් වගේ.
     

    I love JS

    Well-known member
  • Feb 23, 2016
    4,447
    375
    83
    මේ වගේ කැල්කුයුලේෂන් එකක් කරන්න බැරි එක තමා මචං අවුල. ඔය Header එක පාවෙන එක හැන්ඩ්ල් කරන්නේ වෙනමම ලයිබ්රරි එකකින්. ඔය පාවෙන Header එකේ dom nodes insert වෙන්නේ initial page load එකෙන් පස්සේ. ඉතින් ඒ dom elements ඩිටෙක්ට් කරගන්න තමයි scroll event එක යූස් කරන්නේ. වෙන හොද විදියක් නැද්ද මේකට.

    dom එක වෙනස් වෙනකොට fire වෙන ඉවෙන්ට් එකක් වගේ.

    meka baluwada?

    https://stackoverflow.com/questions/2844565/is-there-a-javascript-jquery-dom-change-listener

    http://jsfiddle.net/laelitenetwork/GUxgX/
     
    Last edited:

    kolavari

    Well-known member
  • Aug 11, 2012
    33,746
    1
    25,653
    113
    කැළෑ පොජ්ජේ

    මගේ අවුල තමයි මචං. පේජ් එක යම් දුරක් scroll කරාම පේජ් එකට අලුත් dom node කීපයක් ඇඩ් වෙනව. මේ ඇඩ් වෙන ඒව ඩිටෙක්ට් කරගන්න බැරුව ඉන්නේ. මොකද පේජ් එක රීලෝඩ් වෙන්නෑ ajax වලින් වැඩ කරන්නේ. ඉතින් Load ඉවෙන්ට් එකට අහුවෙන්නෑනේ. page එකේ initial load එකේදි ඒ කෑලි පේජ් එකේ නෑ.

    Use MutationObserver :yes:
     

    Jecob Boman

    Well-known member
  • Dec 10, 2013
    1,333
    93
    48
    homagama

    මම මේ වගේම එකක් වෙන DOMNodeInserted ට්‍රයි කරා. ඒත් මචං අවුල අර scroll එක වගේම තමයි. event එක 10රයක් ෆයර් උනොත්. මමරන් කරන්න හදන මෙතඩ් එකත් හරියටම 10ක් ෆයර් වෙනව. මට ඉවෙන්ට් එක ඕනතරම් රන් උනාට කමක් නෑ. ඒත් ඒ හරහා කෝල් වෙන මෙතඩ් එක අර ඉවෙන්ට් චේන් එකේ අගදි විතරක් එක සැරයක් ෆයර් වෙන්න කර ගන්න පුලුවන්නම් එළ.