您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
You can set custom background image of Discord;
当前为
// ==UserScript== // @name Discord - Custom Background Image // @namespace http://tampermonkey.net/ // @version 0.3 // @description You can set custom background image of Discord; // @author You // @match https://discord.com/channels/* // @match https://discord.com/channels/*/* // @icon https://www.google.com/s2/favicons?domain=discord.com // @grant GM.xmlHttpRequest // @connect i.imgur.com // @license MIT // ==/UserScript== (async window => { 'use strict'; const intervalTime = 30 * 1000; const urls = [ 'https://i.imgur.com/cHKbKQT.jpeg', 'https://i.imgur.com/sqmqy20.png', 'https://i.imgur.com/cCL6TPk.jpeg', 'https://i.imgur.com/Z6GYpxh.jpeg', 'https://i.imgur.com/Z6GYpxh.jpeg', 'https://i.imgur.com/FNJdY5h.jpeg', 'https://i.imgur.com/uKVG1XM.jpeg' ]; const memo = new Map; const get = async url => { if(memo.has(url)) return memo.get(url); const res = await GM.xmlHttpRequest({ method: 'GET', url: url, withCredentials: true, responseType: 'arraybuffer', }); const _url = URL.createObjectURL(new Blob([res.response], {type: 'application/octet-binary'})); memo.set(url, _url); return _url; }; let g_url = await get(urls[0]); const wait = resolve => { if(document.querySelector('[class^="chatContent"]')) return resolve(); setTimeout(() => wait(resolve), 500); }; await new Promise(resolve => wait(resolve)); const set = () => { for(const v of document.querySelectorAll('*')) v.style.backgroundColor = 'rgba(0, 0, 0, 0)'; document.body.children[0].children[3].style.backgroundColor = 'rgba(0, 0, 0, 0.6)'; Object.assign(document.body.children[0].style, { 'background-image': 'url("' + g_url + '")', 'background-attachment': 'fixed', 'background-position': 'center center', 'background-size': 'cover', 'background-repeat': 'no-repeat', 'transition-duration': '1.5s' }); }; set(); let _url = location.href, _time = 0, index = 0; const update = async () => { const time = performance.now(); if(time - _time > intervalTime) { g_url = await get(urls[(++index) % urls.length]); _time = performance.now(); set(); } else { const url = location.href; if(url !== _url) { _url = url; set(); } } requestAnimationFrame(update); }; update(); })(window.unsafeWindow || window);