您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Replace all images on a page with dogs
// ==UserScript== // @name DOGGO // @namespace https://davidjb.online/ // @version 0.1.1 // @description Replace all images on a page with dogs // @author David Bailey // @match *://*/* // @grant GM.getValue // @grant GM.setValue // @grant GM.deleteValue // ==/UserScript== async function getDataUrl(url) { const blob = await fetch(url).then(r => r.blob()); return await new Promise(resolve => { const reader = new FileReader(); reader.onload = () => resolve(reader.result); reader.readAsDataURL(blob); }); } async function loadImageUrls(otherUrls, count=0) { const urls = otherUrls || []; if (count === 0) { window.alert('Loading doggo images...'); } if (urls.length < 50) { window.scrollTo(0, 1000 * count); const images = document.querySelectorAll('.Post-item-media img'); for (const image of images) { if (urls.indexOf(image.src) === -1) { const url = await getDataUrl(image.src); if (!url.match(/^data:text/)) { urls.push(url); } } } window.setTimeout(() => loadImageUrls(urls, count + 1), 2000); } else { GM.setValue('imageUrls', JSON.stringify(urls)); window.alert('Doggo images loaded!'); } } function createImageLoader() { const frame = document.createElement('iframe'); const blocker = document.createElement('div'); const refreshButton = document.querySelector('#doggo-refresh'); refreshButton.onclick = async () => { if (await GM.getValue('imageUrls')) { refresh(); refreshButton.onclick = refresh; } else { window.alert('Already loading images; please wait...'); } }; for (const el of [frame, blocker]) { el.width = 1000; el.height = 1000; el.style.position = 'absolute'; el.style.top = '0'; el.style.left = '0'; el.style.opacity = '0'; } frame.style.zIndex = '-9999'; blocker.style.zIndex = '-9998'; frame.src = 'https://imgur.com/t/dog'; document.body.appendChild(frame); } async function getImageUrls() { const urls = await GM.getValue('imageUrls'); if (!urls) { window.alert('Doggo images haven\'t loaded yet - if this is your first time using the extension, press the \'refresh\' button.'); return false; } return JSON.parse(urls); } function resetUrls() { GM.deleteValue('imageUrls'); } function randomArrayItem(array) { const index = Math.floor(Math.random()*array.length); return array[index]; } async function doggify() { const urls = await getImageUrls(); if (!urls) return; const images = document.querySelectorAll('img'); for (const image of images) { [image.width, image.height] = [image.width, image.height]; // this sets the HTML attributes if not present image.srcset = ''; image.src = randomArrayItem(urls); } } function refresh() { resetUrls(); createImageLoader(); } function createButtons() { const doggoButton = document.createElement('a'); const refreshButton = document.createElement('a'); for (const button of [doggoButton, refreshButton]) { button.href = 'javascript:'; button.style.position = 'fixed'; button.style.top = '10px'; button.style.right = '10px'; button.style.zIndex = '9999'; button.style.display = 'block'; button.style.width = '30px'; button.style.height = '30px'; button.style.textAlign = 'center'; button.style.fontSize = '18px'; button.style.lineHeight = '30px'; button.style.textDecoration = 'none'; button.style.borderRadius = '5px'; button.style.backgroundColor = 'white'; button.style.boxShadow = '0 0 10px rgba(0,0,0,0.25)'; } doggoButton.onclick = doggify; doggoButton.textContent = '?'; doggoButton.style.right = '50px'; refreshButton.id = 'doggo-refresh'; refreshButton.onclick = refresh; refreshButton.textContent = '?'; refreshButton.style.right = '10px'; document.body.appendChild(doggoButton); document.body.appendChild(refreshButton); } if (location.href === 'https://imgur.com/t/dog' && window.self !== window.top) { loadImageUrls(); } else { createButtons(); }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址