您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a button to choose between full-size display (Card layout), collapsed display and default display for image posts
// ==UserScript== // @name Expand raddle images inline // @description Adds a button to choose between full-size display (Card layout), collapsed display and default display for image posts // @version 1.2 // @grant none // @include https://raddle.me* // @license MIT // @namespace https://greasyfork.org/users/1097123 // ==/UserScript== (function() { 'use strict'; let posts = document.querySelectorAll("article"); for(let post of posts) { if (post.classList != null && post.classList.contains("submission--has-thumbnail")) { let img = post.querySelector("img.submission__thumb"); let thumbUrls = img.src.split("/"); let imageName = thumbUrls[thumbUrls.length-1]; let imageUrl = "https://raddle.me/submission_images/" + imageName; //Add a new node that contains the full-size image let div = document.createElement("div"); div.classList.add("userscript_submission__expanded_image"); div.classList.add("hidden_fullsize_image"); let imgNode = document.createElement("img"); imgNode.src = imageUrl; imgNode.classList.add("userscript_expanded_image"); div.appendChild(imgNode); post.appendChild(div); let expandLinkItem = document.createElement("li"); let expandLink = document.createElement("a"); let strongText = document.createElement("strong"); expandLink.href = "javascript:void(0);"; expandLink.classList.add("text-sm"); strongText.innerText = "expand"; strongText.classList.add("userscript_expand_button_text"); expandLink.appendChild(strongText); expandLink.onclick = function() { if(div.classList.contains("hidden_fullsize_image")) { div.classList.remove("hidden_fullsize_image"); strongText.innerText = "collapse"; } else { div.classList.add("hidden_fullsize_image"); strongText.innerText = "expand"; } }; expandLinkItem.appendChild(expandLink); expandLinkItem.classList.add("userscript_expand_button"); let navList = post.querySelector("nav.submission__nav ul"); navList.insertBefore(expandLinkItem, navList.firstChild); } } let head = document.getElementsByTagName("head")[0]; let style = document.createElement("style"); style.type = "text/css"; style.innerHTML = ".userscript_expanded_image { display: block; margin:auto; max-width: 100%; } .userscript_submission__expanded_image { margin: 1em 0 5em 0; } .hidden_fullsize_image { display: none; } .hidden_expand_button { display: none; }"; head.appendChild(style); let pageNav = document.querySelector("main > nav"); let ul = document.createElement("ul"); ul.classList.add("unlistify", "flex"); let li = document.createElement("li"); li.classList.add("dropdown"); let button = document.createElement("button"); button.classList.add("dropdown__toggle", "tab", "no-underline", "unbuttonize"); button.type = "button"; button.innerHTML = '<span class="icon "><svg width="16" height="16"><use xlink:href="/build/images/icons.64b6a2fd.svg#sort"></use></svg></span><span class="no-underline__exempt userscript_button_text">Collapsed</span><span class="dropdown__arrow"></span>'; let optionsList = document.createElement("ul"); optionsList.classList.add("dropdown__menu", "dropdown-card", "unlistify"); let optionDefault = document.createElement("li"); let optionCollapse = document.createElement("li"); let optionCard = document.createElement("li"); let linkDefault = document.createElement("a"); let linkCollapse = document.createElement("a"); let linkCard = document.createElement("a"); const setViewDefault = function() { let buttons = document.querySelectorAll("li.userscript_expand_button"); for(let button of buttons) { if(!button.classList.contains("hidden_expand_button")) { button.classList.add("hidden_expand_button"); } } let images = document.querySelectorAll("div.userscript_submission__expanded_image"); for(let image of images) { if(!image.classList.contains("hidden_fullsize_image")) { image.classList.add("hidden_fullsize_image"); } } document.querySelector(".userscript_button_text").innerText = "Raddle"; if(!linkDefault.classList.contains("menu-item--active")) linkDefault.classList.add("menu-item--active"); linkCollapse.classList.remove("menu-item--active"); linkCard.classList.remove("menu-item--active"); window.localStorage.setItem("userscript_raddle_fullsize_view", 1); }; linkDefault.href = "javascript:void(0);"; linkDefault.classList.add("no-wrap", "menu-item"); linkDefault.onclick = () => setViewDefault(); linkDefault.innerText = "Raddle"; optionDefault.appendChild(linkDefault); const setViewCollapsed = function() { let buttons = document.querySelectorAll("li.userscript_expand_button"); for(let button of buttons) { if(button.classList.contains("hidden_expand_button")) { button.classList.remove("hidden_expand_button"); } } let images = document.querySelectorAll("div.userscript_submission__expanded_image"); for(let image of images) { if(!image.classList.contains("hidden_fullsize_image")) { image.classList.add("hidden_fullsize_image"); } } let texts = document.querySelectorAll("strong.userscript_expand_button_text"); for(let text of texts) { text.innerText = "expand"; } document.querySelector(".userscript_button_text").innerText = "Collapsed"; linkDefault.classList.remove("menu-item--active"); if(!linkCollapse.classList.contains("menu-item--active")) linkCollapse.classList.add("menu-item--active"); linkCard.classList.remove("menu-item--active"); window.localStorage.setItem("userscript_raddle_fullsize_view", 2); }; linkCollapse.href = "javascript:void(0);"; linkCollapse.classList.add("no-wrap", "menu-item", "menu-item--active"); linkCollapse.onclick = () => setViewCollapsed(); linkCollapse.innerText = "Collapsed"; optionCollapse.appendChild(linkCollapse); const setViewCard = function() { let buttons = document.querySelectorAll("li.userscript_expand_button"); for(let button of buttons) { if(!button.classList.contains("hidden_expand_button")) { button.classList.add("hidden_expand_button"); } } let images = document.querySelectorAll("div.userscript_submission__expanded_image"); for(let image of images) { if(image.classList.contains("hidden_fullsize_image")) { image.classList.remove("hidden_fullsize_image"); } } document.querySelector(".userscript_button_text").innerText = "Card"; linkDefault.classList.remove("menu-item--active"); linkCollapse.classList.remove("menu-item--active"); if(!linkCard.classList.contains("menu-item--active")) linkCard.classList.add("menu-item--active"); window.localStorage.setItem("userscript_raddle_fullsize_view", 3); }; linkCard.href = "javascript:void(0);"; linkCard.classList.add("no-wrap", "menu-item"); linkCard.onclick = () => setViewCard(); linkCard.innerText = "Card"; optionCard.appendChild(linkCard); optionsList.appendChild(optionDefault); optionsList.appendChild(optionCollapse); optionsList.appendChild(optionCard); li.appendChild(button); li.appendChild(optionsList); ul.appendChild(li); pageNav.appendChild(ul); let number = window.localStorage.getItem("userscript_raddle_fullsize_view"); if(number == 1) { setViewDefault(); } else if(number == 3) { setViewCard(); } else { setViewCollapsed(); } })();