Created
March 30, 2012 18:12
-
-
Save jasondavis/2253607 to your computer and use it in GitHub Desktop.
Dribbble Lazy Load
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ==UserScript== | |
| // @name Dribbble Lazy Loader | |
| // @description A lazy loader (or infinity scroller) for Dribbble, the behaves similar to the Forrst lazy loader. | |
| // @include http://www.dribbble.com/* | |
| // @include http://dribbble.com/* | |
| // @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js | |
| // ==/UserScript== | |
| // a function that loads jQuery and calls a callback function when jQuery has finished loading | |
| function addJQuery(callback) { | |
| var script = document.createElement("script"); | |
| script.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"); | |
| script.addEventListener('load', function() { | |
| var script = document.createElement("script"); | |
| script.textContent = "(" + callback.toString() + ")();"; | |
| document.body.appendChild(script); | |
| }, false); | |
| document.body.appendChild(script); | |
| } | |
| // the guts of this userscript | |
| function main() { | |
| ////////////////////////////////////////////////////////////////////// | |
| var pageNumber; | |
| var upButtonSrc = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAxCAYAAACcXioiAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAz1JREFUeNrsmc9PE0EUgDvTpTZEEGns2kgFCcoBjAQTSY+GhMDBmyH8SppgPBrwwoVTvTca4kWtCScSTf0LGnvz1INGSYRiIIgcaEXR1ANl2/W9slOHtTSR7mzHZF/y0t3Zzfb7dt5MdzvE9ScI5DnIFsjTxr5MoUPmIPcgs8Z+GbLB4/FczufzZ2Bb4dp1SeB5Hg1YfwDrGmwf4AHi9/uvZjIZdteLxom6ZAIsKXIBcw6YP5D29vbA5ubmRePAAWTBJFHPniAmAWR0Y8UgI7B/VgYGBjpBQIOGfUNA4wRkKCNegholjnwNyE58Pt+N3d1dhM5XEJCthJgA9oAH2BVsvG7A8wK6pIOY8AKYinFA41K2u2/uBY3rjbJAUdLZx/w7wD4Zb8nCJWrGWVxc7NzY2JgWJFHaVkwHLYUfGxt7rihKy9bWVmMwGHxsoUSZk4oYrDw87gcCgTvb29v3RJQUtbpQzfAsVFWdFiBhrYAB/9QML1KCCoD3VTvPaglqJ7wICWo3vNUSNQnEYrGOSvDwmJvO5XI7fFs6nX6j63rRaglaC/zU1FSsEvzg4OCDQqGQ59tTqVRyaWnpidUSJxKYnZ09Ww3+IwQh5MhvS2tr669wOPzyOIn19fWwbQK9vb1qNXj2nFIh9o6TgOtds00A3kfdJ4A/IgHxjJfQNM1dl1noH+HLEpOTky/MEicJpQ7wLL6jBG6Mjo7etV0gm81+qgH+L4lQKHTFNoFkMpldWFiIrKys1AJ/RGJiYuKSbQLxePwbfHy1AL4sATNTzs4S0gS8Mh7U/XG6HuEIOAKOgCPgCDgCjkA9QxF14fn5+Uder7eZ7S8vL78X8T1shean63CFpmDhE+YpUw+z61tRNfj6iSs0zYrA3t23ZQyoqqr8r/Xf09PjpTMzM0GRY0Hk+B0fHz9Ph4aGLrgOV/3YIprswTgbhoeH22hfX9/O3NxcBzQ0cifIDI/RiMzITt1u96tIJHILGrrgQJMxexBJ4XHmaUJWZEb2Eqiu6/5isfhwdXX1SyKReAvjYk3G2x+NRrtGRkb6u7u72yil9wkhmfKdBgkcB7chb0L2S1pC7yBf4x8jAF/6E+C3AAMAeCCRr8LE6MIAAAAASUVORK5CYII=" | |
| var spinnerSrc = "data:image/png;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" | |
| function getParameterByName(name) { | |
| name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); | |
| var regexS = "[\\?&]"+name+"=([^&#]*)"; | |
| var regex = new RegExp( regexS ); | |
| var results = regex.exec( window.location.href ); | |
| if( results == null ) { | |
| return ""; | |
| } else{ | |
| return decodeURIComponent(results[1].replace(/\+/g, " ")); | |
| } | |
| } | |
| if(getParameterByName("page") == "") { | |
| pageNumber = 1; | |
| } else { | |
| pageNumber = getParameterByName("page"); | |
| } | |
| // Holder for shots to be dumped into | |
| $("<div id='ajaxHolder' />").css("display","none").appendTo(document.body); | |
| // Spinner/loading message | |
| $(".next_page").parent().append("<div id='ajaxLoader' />"); | |
| $("#ajaxLoader").append("<img src='" + spinnerSrc + "' />").append(" Loading").hide(); | |
| // "Back to top" button | |
| $("<div />").attr("id","topLink").append("<img src='" + upButtonSrc + "' />").appendTo(document.body); | |
| $("#topLink").css({ | |
| "position": "fixed", | |
| "right": "10px", | |
| "top": "10px", | |
| "cursor": "pointer" | |
| }).hide().click(function() { | |
| window.scrollTo(0,0); | |
| }); | |
| // Hide pagination | |
| $(".prev_page, .next_page").hide(); | |
| // Lazy load/infinity scrolling | |
| $(window).scroll(function(){ | |
| if ($(window).scrollTop() == $(document).height() - $(window).height()){ | |
| $("#ajaxLoader, #topLink").fadeIn(); | |
| pageNumber++; | |
| var holder = $("#ajaxHolder").load("?page=" + pageNumber + " ol.dribbbles", function() { | |
| $("#ajaxLoader").fadeOut(); | |
| $("#ajaxHolder ol").appendTo("#main"); | |
| $("#main > .page, #main .rss").appendTo("#main"); | |
| }); | |
| } | |
| }); | |
| //end jQuery inclusion | |
| } | |
| // load jQuery and execute the main function | |
| addJQuery(main); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment