Make WordPress Core

Ticket #18758: 18758.diff

File 18758.diff, 1.9 KB (added by ericmann, 13 years ago)

New patch cleans up some code and makes a few conditional statements easier to follow.

  • 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") return;
     64                        e.preventDefault();
     65
     66                        $('html, body').animate({ scrollTop: 0 }, 'fast');
     67                });
     68
    6269        });
    6370} else {
    6471        (function(d, w) {
     
    180187                        return false;
    181188                };
    182189
     190                scrollToTop = function(t) {
     191                        if(t.id != 'wpadminbar') return;
     192
     193                        var startY = (function() {
     194                                        if (self.pageYOffset) return self.pageYOffset;
     195
     196                                        if (document.body.scrollTop) return document.body.scrollTop;
     197
     198                                        return 0;
     199                                })(),
     200                                distance = startY > 0 ? startY : -startY;
     201
     202                        if (distance < 100) {
     203                                scrollTo(0, 0); return;
     204                        }
     205
     206                        var speed = Math.round(distance / 100),
     207                                step = Math.round(distance / 25),
     208                                leapY = startY > 0 ? startY - step : startY + step,
     209                                timer = 0;
     210
     211                        speed = (speed >= 20) ? 20 : speed;
     212
     213                        if (0 > startY) {
     214                                for ( var i = startY; i < 0; i += step ) {
     215                                        setTimeout("window.scrollTo(0, " + leapY + ")", timer * speed);
     216                                        leapY += step;
     217                                       
     218                                        if (leapY > 0) {
     219                                                leapY = 0;
     220                                        }
     221                                       
     222                                        timer++;
     223                                }
     224
     225                                return;
     226                        }
     227
     228                        for ( var i = startY; i > 0; i -= step ) {
     229                                setTimeout("window.scrollTo(0, " + leapY + ")", timer * speed);
     230                                leapY -= step;
     231                               
     232                                if (leapY < 0) {
     233                                        leapY = 0;
     234                                }
     235                               
     236                                timer++;
     237                        }
     238                };
     239
    183240                addEvent(w, 'load', function() {
    184241                        aB = d.getElementById('wpadminbar');
    185242
     
    198255                                });
    199256
    200257                                addEvent(aB, 'click', clickShortlink );
     258
     259                                addEvent(aB, 'click', function(e){
     260                                        scrollToTop(e.target);
     261                                });
    201262                        }
    202263
    203264                        if ( w.location.hash )