WordPress.org

Make WordPress Core

Ticket #18758: 18758.3.diff

File 18758.3.diff, 1.8 KB (added by ericmann, 3 years ago)

Patch fully compatible with IE7-9

  • wp-includes/js/admin-bar.dev.js

     
    5959                        target.siblings('.ab-sub-wrapper').find('.ab-item').each(refresh); 
    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 { 
    6472        (function(d, w) { 
     
    178186                                } 
    179187                        } 
    180188                        return false; 
     189                }, 
     190 
     191                scrollToTop = function(t) { 
     192                        var startY, distance, direction, speed, step, steps, timer; 
     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                        startY    = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; 
     199                        direction = ( startY > 0 ) ? 1 : -1; 
     200                        distance  = Math.abs( startY ); 
     201                        speed     = Math.min( 20, Math.round( distance / 100 ) ); 
     202                        step      = Math.round( distance / 25  ); 
     203                        steps     = []; 
     204                        timer     = 0; 
     205 
     206                        // Animate scrolling to the top of the page by generating steps to 
     207                        // the top of the page and shifting to each step at a set interval. 
     208                        while ( distance ) { 
     209                                distance -= step; 
     210                                if ( distance < 0 ) 
     211                                        distance = 0; 
     212                                steps.push( distance * direction ); 
     213 
     214                                setTimeout( function() { 
     215                                        window.scrollTo( 0, steps.shift() ); 
     216                                }, timer * speed ); 
     217 
     218                                timer++; 
     219                        } 
    181220                }; 
    182221 
    183222                addEvent(w, 'load', function() { 
     
    198237                                }); 
    199238 
    200239                                addEvent(aB, 'click', clickShortlink ); 
     240 
     241                                addEvent(aB, 'click', function(e) { 
     242                                        scrollToTop( e.target || e.srcElement ); 
     243                                }); 
    201244                        } 
    202245 
    203246                        if ( w.location.hash )