您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Replaces images from stack.imgur.com and collates them
- // ==UserScript==
- // @name Image Proxier
- // @namespace https://github.com/GrumpyCrouton/Userscripts
- // @version 2.0
- // @description Replaces images from stack.imgur.com and collates them
- // @author GrumpyCrouton, Yilmaz Durmaz
- // @match *://*.stackoverflow.com/*
- // @match *://*.stackexchange.com/*
- // @match *://*.superuser.com/*
- // @grant GM.xmlHttpRequest
- // ==/UserScript==
- // OPTIONS
- var convertImages = true;
- // var convertLinks = true;
- var convertLinks = true;
- var frequencyInSeconds = 5;
- var addProxy = true;
- var proxy = "http://service.hidebux.com/index.php";
- var matchURLs = ["https://i.stack.imgur.com/", "https://i.imgur.com/", "http://i.imgur.com/"];
- // DO NOT ALTER BELOW THIS LINE
- var debug = false;
- var modal = document.createElement("div");
- modal.id = "image-proxier-modal";
- modal.style.position = "fixed";
- modal.style.border = "5px outset #52575b";
- modal.style.zIndex = 999;
- modal.style.padding = "5px";
- modal.style.background = "white";
- modal.style.display = "none";
- modal.setAttribute("onmouseover", "modalOver1()");
- modal.setAttribute("onmouseleave", "modalOver0()");
- modal.innerHTML = " \
- <div style='width:100%;text-align:right;'> \
- <strong><div id='image-proxier-close' style='cursor:pointer;'>X</div></strong> \
- </div> \
- <div style='width:100%;text-align:center;overflow:auto;'> \
- <img id='image-proxier-magnif'></img> \
- </div> \
- ";
- document.getElementsByTagName("BODY")[0].appendChild(modal);
- if (convertImages) {
- replaceImages();
- }
- function goProxy(source, attr, val) {
- GM.xmlHttpRequest({
- synchronous: "True",
- method: "POST",
- url: proxy,
- data: "url=" + val,
- headers: {
- "Content-Type": "application/x-www-form-urlencoded"
- },
- onload: function(response) {
- if (debug) {
- console.log([
- response.status,
- response.statusText,
- response.readyState,
- response.responseHeaders,
- response.responseText,
- response.finalUrl,
- response.XML
- ].join("\n"));
- }
- source.setAttribute(attr, response.finalUrl);
- source.setAttribute("onmouseover", "showOver('" + attr + "',this)");
- source.setAttribute("onmouseleave", "hideOver()");
- source.classList = "comeover";
- //console.log(source.src);
- }
- });
- }
- function replaceImages() {
- var allImages = document.getElementsByTagName('img');
- for (var i = 0; i < allImages.length; i++) {
- var sImage = allImages[i];
- href = sImage.getAttribute('src');
- $(sImage).wrap('<a href="' + href + '" class="link"></a>');
- var result = containsAny(sImage.src, matchURLs);
- //console.log(result);
- if (result) {
- if (addProxy) {
- // sImage.src = proxy + sImage.src;
- goProxy(sImage, "src", sImage.src);
- //console.log(sImage.src);
- }
- }
- }
- }
- if (convertLinks) {
- // replaceLinks();
- replaceLinksSmall();
- }
- function replaceLinksSmall() {
- var allLinks = document.getElementsByTagName('a');
- for (var i = 0; i < allLinks.length; i++) {
- var sLink = allLinks[i];
- var result = containsAny(sLink.href, matchURLs);
- if (result) {
- if (addProxy) {
- goProxy(sLink, "href", sLink.href);
- }
- }
- }
- }
- function replaceLinks() {
- var links = document.getElementsByTagName('a');
- for (var i = 0; i < links.length; i++) {
- var matches = containsAny(links[i].href, matchURLs);
- if (matches) {
- //link variables
- var link = links[i];
- var linkParent = links[i].parentNode;
- //create <img> element
- var image = document.createElement("img");
- if (addProxy) {
- goProxy(image, "src", link.href);
- } else {
- image.src = link.href;
- }
- image.style.height = "auto";
- image.style.width = "75px";
- image.style.border = "2px outset #52575b";
- //alter <a> element
- if (addProxy) {
- var temp = {
- src: ""
- };
- goProxy(temp, "src", link.href);
- //console.log(temp.src);
- link.setAttribute("link", temp.src);
- }
- link.href = "";
- link.classList.add("image-proxier-image");
- link.innerHTML = "";
- link.style.borderBottom = "none";
- link.style.paddingRight = "3px";
- //attach <img> to <a>
- link.append(image);
- result = linkParent.querySelector('.imageContainer');
- if (!result) {
- //create imageContainer (div) element
- var container = document.createElement("div");
- container.classList.add("imageContainer");
- container.style.backgroundColor = "#d4d4d4";
- container.style.padding = "3px";
- linkParent.prepend(container);
- container.prepend(scriptName());
- }
- //append image to container that exists from last check
- linkParent.querySelector(".imageContainer").appendChild(link);
- }
- }
- }
- $("#image-proxier-close").click(function() {
- $("#image-proxier-modal").hide();
- return false;
- });
- $(".image-proxier-image").click(function() {
- var proxierImage = document.querySelector("#image-proxier-magnif");
- proxierImage.src = $(this).attr('link');
- proxierImage.style.width = "800px";
- proxierImage.style.height = "auto";
- proxierImage.style.maxHeight = "550px";
- $("#image-proxier-modal").show();
- return false;
- });
- var showover = document.createElement("script");
- showover.innerHTML = '\
- function showOver(name,e){\
- var posX=window.event.clientX+50;\
- var posY=document.documentElement.scrollTop;\
- var hY=window.innerHeight;\
- var modal = document.querySelector("#image-proxier-modal");\
- modal.style.width = "auto";\
- modal.style.height = (hY-50)+"px";\
- modal.style.maxheight = "1000px";\
- modal.style.left = posX+"px";\
- modal.style.top = 25+"px";\
- var proxierImage = document.querySelector("#image-proxier-magnif");\
- proxierImage.src = $(e).attr(name);\
- proxierImage.style.width = "auto";\
- proxierImage.style.height = "auto";\
- proxierImage.style.textAlign = "center";\
- proxierImage.style.maxHeight = (hY-100)+"px";\
- $("#image-proxier-modal").show();}\
- function hideOver(){\
- $("#image-proxier-modal").hide();}\
- function modalOver1(){ }\
- function modalOver0(){\
- $("#image-proxier-modal").hide();}\
- ';
- //'function showOver(name,e){console.log(name+": "+e.getAttribute(name)+":"+"mouse over");}';
- document.getElementsByTagName("BODY")[0].appendChild(showover);
- $(document).mouseup(function(e) {
- var container = $("#image-proxier-modal");
- // if the target of the click isn't the container nor a descendant of the container
- if (!container.is(e.target) && container.has(e.target).length === 0) {
- container.hide();
- }
- });
- function scriptName() {
- var node = document.createElement("div");
- node.style.fontSize = "10px";
- node.style.width = "100%";
- node.innerHTML = "<center><a href='https://github.com/GrumpyCrouton/Userscripts' target='_blank'>Image Proxier</a></center>";
- return node;
- }
- function containsAny(str, substrings) {
- for (var i = 0; i < substrings.length; i++) {
- if (str.startsWith(substrings[i])) {
- return true;
- }
- }
- return false;
- }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址