imgur scroll to gallery images keyboard shortcuts

use ↑/↓ to scroll to the next/previous image within an imgur gallery

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         imgur scroll to gallery images keyboard shortcuts
// @namespace    http://porath.org/
// @version      0.13
// @description  use ↑/↓ to scroll to the next/previous image within an imgur gallery
// @author       porath
// @match        http://imgur.com/*
// @grant        none
// ==/UserScript==

// thanks to moiph and CBenni and Brybry

var current = 0;
var elems = $('.album-image');
var numElems = elems.length;

$(document).on('keydown', function (key) {
    if (key.which == 40) {
        key.preventDefault();
        
        if (current + 1 == numElems) {
            if ($('#album-truncated')) {
                $('#album-truncated > a').click();
                
                window.setTimeout(function() { // wait 200 ms then update the album size
                    elems = $('.album-image');
                    numElems = elems.length;
                }, 200);
            }
            
            return;
        }
        
        elems[current + 1].scrollIntoView();
        $('body').scrollTop($('body').scrollTop() - 28);
        current = current + 1;
    }
    
    if (key.which == 38) {
        key.preventDefault();
        
        if (current == 0) {
            return;
        }
        
        elems[current - 1].scrollIntoView();
        $('body').scrollTop($('body').scrollTop() - 28);
        current = current - 1;
    }
    
    if (key.which == 36) { // "home" puts you at the top of the gallery
        current = 0;
    }
    
    if (key.which == 35) { // "end" puts you at the bottom of the gallery
        current = numElems;
    }
    
    if (key.which == 37 || key.which == 39) { // when a user presses left or right to go to the prev/next page
        current = 0;
        elems = $('.album-image');
        numElems = elems.length;
    }
});