myScrollTo() Find scrollElement

scrollTop() manipulation : 'html, body' for setter... window for getter...

by molokoloco

HTML

I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long webpage - I'am a long...

JavaScript

// Code by molokoloco 2011
// For the scroll : 'html' or 'body' for setter (depend on browser)... 'window' for getter...
// Sources : https://github.com/molokoloco/My-Book-ReadR
// Complete example here : http://jsfiddle.net/molokoloco/Atj8Z/


$(function() {
    var $window = $(window), // Set in cache, intensive use !
        $document = $(document),
        $body = $('body'),
        scrollElement = 'html, body',
        $scrollElement = $();
    
    var isAnimated = false;
    
    // Find scrollElement
    // Inspired by http://www.zachstronaut.com/posts/2009/01/18/jquery-smooth-scroll-bugs.html
    $(scrollElement).each(function(i) {
        // 'html, body' for setter... window for getter... 
        var initScrollTop = parseInt($(this).scrollTop(), 10);
        $(this).scrollTop(initScrollTop + 1);
        if ($window.scrollTop() == initScrollTop + 1) {
            scrollElement = this.nodeName.toLowerCase(); // html OR body
            return false; // Break
        }
    });
    $scrollElement = $(scrollElement);
    
    // UTILITIES...
    var getHash = function() {
            return window.location.hash || '';
        },
        setHash = function(hash) {
            if (hash && getHash() != hash) window.location.hash = hash;
        },
        getWinWidth = function() {
            return $window.width();
        },
        // iphone ? ((window.innerWidth && window.innerWidth > 0) ? window.innerWidth : $window.width());
        getWinHeight = function() {
            return $window.height();
        },
        // iphone ? ((window.innerHeight && window.innerHeight > 0) ? window.innerHeight : $window.height());
        getPageWidth = function() {
            return $document.width();
        },
        getPageHeight = function() {
            return $document.height();
        },
        getScrollTop = function() {
            return parseInt($scrollElement.scrollTop() || $window.scrollTop(), 10);
        },
        setScrollTop = function(y) {
    ...