Image Download with Ctrl+Click/Shift/MMB [GLOBAL]

Image downloading for most single-image pages, with Ctrl+Click, Shift or MMB-Click combinations

// ==UserScript==
// @name            Image Download with Ctrl+Click/Shift/MMB [GLOBAL]
// @namespace       imageSaving
// @description     Image downloading for most single-image pages, with Ctrl+Click, Shift or MMB-Click combinations
// @author          NightLancerX
// @match           *://*/*.jpg*
// @match           *://*/*.png*
// @match           *://*/*.jpeg*
// @match           *://*/*.gif*
// @version         2.5
// @homepageURL     https://github.com/NightLancer/PixivPreview
// @license         MIT License
// @grant           none
// @run-at          document-end
// ==/UserScript==

(function() {
    'use strict';

    let img = document.querySelectorAll('img')[0];
    let imgSrc = img.src;

    let main = function()
    {
        let anchor = document.createElement('a'), name;
        name = (imgSrc.indexOf('?')>-1)? imgSrc.substring(imgSrc.lastIndexOf("/")+1, imgSrc.indexOf('?')): imgSrc.substring(imgSrc.lastIndexOf("/")+1);
        try {name = decodeURI(name);} catch(e){};
        anchor.href = img.src;
        anchor.target = '_self';
        anchor.download = name;
        document.body.appendChild(anchor);
        anchor.click();
        main = ()=>{};
    };

    //save with Ctrl+Click
    img.onclick = function(e){
        if (e.ctrlKey){
            e.preventDefault();
            main();
        }
    };

    //save with Shift
    document.onkeyup = function(e){
        if (e.keyCode == 16){
            main();
        }
    };

    //save with MMB-click
    img.onmouseup = function(e){
        if (e.button == 1){
            main();
        }
    };
})();