Make WordPress Core

Ticket #18758: 18758.3.diff

File 18758.3.diff, 1.8 KB (added by ericmann, 13 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 )