// ==UserScript== // @name 花瓣 - 添加下载按钮 // @namespace http://tampermonkey.net/ // @version 0.5.4 // @description 给花瓣的图加上“下载”按钮,方便下载 // @author 潘志城_Neo // @match *://huaban.com/* // @match *://hbimg.huabanimg.com/* // @grant GM_download // @grant GM_xmlhttpRequest // @grant GM_notification // @grant GM_registerMenuCommand // @grant GM_setValue // @grant GM_getValue // @connect gd-hbimg.huaban.com // @downloadURL https://update.greasyfork.icu/scripts/407181/%E8%8A%B1%E7%93%A3%20-%20%E6%B7%BB%E5%8A%A0%E4%B8%8B%E8%BD%BD%E6%8C%89%E9%92%AE.user.js // @updateURL https://update.greasyfork.icu/scripts/407181/%E8%8A%B1%E7%93%A3%20-%20%E6%B7%BB%E5%8A%A0%E4%B8%8B%E8%BD%BD%E6%8C%89%E9%92%AE.meta.js // ==/UserScript== ;(function () { "use strict" // 所有图片 var allImages = [] // 按钮样式 var btnStyleText = "border:0; color:#ffffff ;background-color: rgb(26 179 125 / 75%);border-radius:8px;padding:3px 12px;cursor:pointer;pointer-events:all;" var interval = null var defaultSetting = { prefix: "HB", // 前缀 show_notification: true, // 是否显示通知消息 rename: false, // 是否重命名 show_source_img: false, // 是否显示大图 show_img_title: false, // 是否显示图片标题 download_type: "gm_download", // 下载方式 } // 配置信息 var setting = GM_getValue("setting") if (!setting) { setting = Object.assign({}, defaultSetting) } else { setting = Object.assign({}, defaultSetting, setting) } GM_setValue("setting", setting) // 主函数 function main() { document.body.addEventListener("click", function (e) { // 点击img标签的时候才尝试添加下载按钮 if ((e, e.target.tagName === "IMG")) { addDonwloadBtnToPreivew() } }) // 网页滚动的时候,检测图片是否有添加下载按钮,没有就添加 document.addEventListener("scroll", throttle(addDownloadBtn, 300)) // 添加设置选项 setSettingMenu() addDownloadBtn() interval = setInterval(() => { if (allImages.length === 0) { addDownloadBtn() } else { clearInterval(interval) } }, 1500) } main() /** * 添加设置选项 */ function setSettingMenu() { var menuCommandSetting = GM_registerMenuCommand( "设置", function (e) { addMenu() }, "S" ) } // 插入菜单到页面 function addMenu() { var domMenu = document.getElementById("neo_huaban_menu") if (domMenu !== null) { return } domMenu = document.createElement("div") domMenu.id = "neo_huaban_menu" domMenu.style = "z-index:2333; width:252px; min-height:120px; display:flex; flex-direction: column; position:fixed; top:50%; left: 50%; transform:translate(-50%,-50%); border-radius:8px; overflow:hidden; background:white;box-shadow: 2px 2px 6px 1px #5668577a;" var domHtml = `