您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
If you have a script manager and you want to download some script without installing it, this script will help
当前为
// ==UserScript== // @name GreasyFork: download script button // @description If you have a script manager and you want to download some script without installing it, this script will help // @author Konf // @version 1.2.1 // @namespace https://gf.qytechs.cn/users/424058 // @icon https://www.google.com/s2/favicons?domain=gf.qytechs.cn&sz=32 // @include /^http(s|):\/\/(sleaz|greas)yfork\.org\/[a-zA-Z_-]*\/scripts\/\d.*$/ // @compatible Chrome // @compatible Opera // @compatible Firefox // @run-at document-end // @grant GM_addStyle // @noframes // ==/UserScript== /* jshint esversion: 6 */ /* eslint-disable no-multi-spaces */ (function() { 'use strict'; const langStrings = (function() { const userLang = location.pathname.split('/')[1]; const langStringsList = { 'en': { Dl: 'Download without installing', failedDl: 'Failed to download the script. ' + 'More info might be in console' }, 'zh-CN': { Dl: '下载此脚本', failedDl: '无法下载此脚本' }, 'ru': { Dl: 'Скачать не устанавливая', failedDl: 'Не удалось скачать скрипт. ' + 'Больше информации может быть в консоли' } }; return function(id) { const userStrings = langStringsList[userLang]; const enStrings = langStringsList.en; return (userStrings || enStrings)[id] || enStrings[id]; } }()); // https://img.icons8.com/pastel-glyph/64/ffffff/download.png // array because tampermonkey can't roll up a string in the code editor const downloadIcon = ['data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE', 'AAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAABgUlEQVR4nO3ZTU6DUAAE4HnE', 'k+jWG3TrHVwY3XoEt23cGleamtRtTbyPS3sCV0bXjptHRAIEsM/hZ76kCZRHGaZAGwDMzM', 'zMbJ6CasMkMwBncXYbQvhSZZEgecEf56ocmWrDAA4L00eqEMoCBsEFqAOouQB1ADUXoA6g', '5gLUAdRcgDqAmgtQB1BzAeoAakkLIHlN8pPkDcnWd59IBpK3cd1VyoxJkfwo3PV5KJZAcl', 'lYtiy8H+LY3HvKjKlPgU1h+hLAuulIiMvWcWzVZ4xL/Dbv+Nsjyax8BMSx96Wxm3jzdLwa', 'SliVCpjezucqzmuSfKuZJkvXi0moORKqTOebL2tRwnR3PtdQwvR3PldRgmznlc8GA4DTOP', 'scQqAqy6x1+X8+6Ke5yfNxIE9z6/TN1+XCM4inuQ165ZvHz04DF6AOoOYC1AHUXIA6gNpB', 'z/UWJK/2muTvFn1W6lvASXyNXpdTYJcsxf69th3Y5QjYAiCA485x/tcLgCd1CDMzMzMbum', '8+xtkWw6QCvwAAAABJRU5ErkJggg=='].join(''); const b = document.createElement('button'); // downloadBtn const bIcon = document.createElement('div'); const bParent = document.body.querySelector('div#install-area'); const bNeighbour = document.body.querySelector('a.install-help-link'); const installBtn = document.body.querySelector('a.install-link'); if (!bParent || !bNeighbour || !installBtn) return; GM_addStyle([` .tm-dsb-downloadBtn { width: 43px; height: 38px; position: relative; padding: 0; vertical-align: bottom; cursor: pointer; border: none; outline: none; background: #0F750F; transition: box-shadow 0.2s; } .tm-dsb-downloadBtn:hover, .tm-dsb-downloadBtn:focus { box-shadow: 0 8px 16px 0 rgb(0 0 0 / 20%), 0 6px 20px 0 rgb(0 0 0 / 19%); } .tm-dsb-downloadBtn__icon { position: absolute; } .tm-dsb-downloadBtn__icon--download { width: 35px; height: 35px; top: 1px; left: 4px; background: url(${downloadIcon}); background-size: contain; } .tm-dsb-downloadBtn__icon--loading, .tm-dsb-downloadBtn__icon--loading:after { border-radius: 50%; width: 16px; height: 16px; } .tm-dsb-downloadBtn__icon--loading { top: 6px; left: 8px; border-top: 5px solid rgba(255, 255, 255, 0.2); border-right: 5px solid rgba(255, 255, 255, 0.2); border-bottom: 5px solid rgba(255, 255, 255, 0.2); border-left: 5px solid #ffffff; transform: translateZ(0); animation: loading 1.1s infinite linear; } @keyframes loading { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } `][0]); b.title = langStrings('Dl'); b.className = 'tm-dsb-downloadBtn'; bIcon.className = 'tm-dsb-downloadBtn__icon tm-dsb-downloadBtn__icon--download'; bNeighbour.style.position = 'relative'; // shadow bugfix bParent.insertBefore(b, bNeighbour); b.appendChild(bIcon); let fetchingDelay = false; b.addEventListener('click', () => { setTimeout(() => { if (b === document.activeElement) b.blur(); }, 250); if (fetchingDelay) return; fetchingDelay = true; bIcon.className = 'tm-dsb-downloadBtn__icon tm-dsb-downloadBtn__icon--loading'; fetch(installBtn.href) .then(res => res.blob()) .then(blob => { const url = window.URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `${installBtn.dataset.scriptName || Date.now()}.user.js`; document.body.appendChild(a); // needed due to firefox bug a.click(); a.remove(); setTimeout(closeFetchUX, 300); window.URL.revokeObjectURL(url); }) .catch(e => { setTimeout(closeFetchUX, 300); alert(`${langStrings('failedDl')}: \n${e}`); }); }); // utils ------------------------------------------------------------- function closeFetchUX() { fetchingDelay = false; bIcon.className = 'tm-dsb-downloadBtn__icon tm-dsb-downloadBtn__icon--download'; } // -------------------------------------------------------------------- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址