WordPress.org

Make WordPress Core

Changeset 19846


Ignore:
Timestamp:
02/06/12 23:17:28 (4 years ago)
Author:
azaozz
Message:

Click empty toolbar to scroll to top, props ericmann, fixes #18758

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/js/admin-bar.dev.js

    r19712 r19846  
    6060        }); 
    6161 
     62        $('#wpadminbar').click( function(e) { 
     63            if ( e.target.id != 'wpadminbar' && e.target.id != 'wp-admin-bar-top-secondary' ) 
     64                return; 
     65 
     66            e.preventDefault(); 
     67            $('html, body').animate({ scrollTop: 0 }, 'fast'); 
     68        }); 
     69 
    6270    }); 
    6371} else { 
     
    179187            } 
    180188            return false; 
     189        }, 
     190 
     191        scrollToTop = function(t) { 
     192            var distance, speed, step, steps, timer, speed_step; 
     193 
     194            // Ensure that the #wpadminbar was the target of the click. 
     195            if ( t.id != 'wpadminbar' && t.id != 'wp-admin-bar-top-secondary' ) 
     196                return; 
     197 
     198            distance    = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; 
     199 
     200            if ( distance < 1 ) 
     201                return; 
     202 
     203            speed_step = distance > 800 ? 130 : 100; 
     204            speed     = Math.min( 12, Math.round( distance / speed_step ) ); 
     205            step      = distance > 800 ? Math.round( distance / 30  ) : Math.round( distance / 20  ); 
     206            steps     = []; 
     207            timer     = 0; 
     208 
     209            // Animate scrolling to the top of the page by generating steps to 
     210            // the top of the page and shifting to each step at a set interval. 
     211            while ( distance ) { 
     212                distance -= step; 
     213                if ( distance < 0 ) 
     214                    distance = 0; 
     215                steps.push( distance ); 
     216 
     217                setTimeout( function() { 
     218                    window.scrollTo( 0, steps.shift() ); 
     219                }, timer * speed ); 
     220 
     221                timer++; 
     222            } 
    181223        }; 
    182224 
     
    199241 
    200242                addEvent(aB, 'click', clickShortlink ); 
     243 
     244                addEvent(aB, 'click', function(e) { 
     245                    scrollToTop( e.target || e.srcElement ); 
     246                }); 
    201247            } 
    202248 
Note: See TracChangeset for help on using the changeset viewer.