您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
为 MikanAni 的磁力链复制按钮后加上直接打开链接的按钮。
// ==UserScript== // @name MikanAniDirectDownload // @namespace https://greasyfork.org/users/158429 // @version 114515 // @description 为 MikanAni 的磁力链复制按钮后加上直接打开链接的按钮。 // @author You // @license MIT // @match https://mikanani.me/* // @run-at document-end // @icon https://www.google.com/s2/favicons?sz=64&domain=mikanani.me // @grant none // ==/UserScript== (function() { 'use strict'; // mikan dynamicly generate magnet-link nodes, and they cannot // be observed directly. const env = {}; const config = {}; // no gui configuration yet and then, it doesn't deserve。 config.isOpenInNewWindow = true; function appendATag(element) { let a = document.createElement("a"); a.href = element.dataset.clipboardText; a.target = '_blank'; a.textContent = ' [🔗]'; // a.style.color = '#555'; if (config.isOpenInNewWindow) { a.onclick = (e) => { e.preventDefault(); window.open(a.href, '_blank ', `popup=true, width=400, height=100, left==${e.clientX}, top=${e.clientY}`); return false}; } element.insertAdjacentElement('afterend', a); } // table-striped view has first page preloaded. env.isTableView = false; if (window.location.pathname.length > 1) { env.isTableView = true; [ ... document.getElementsByClassName('magnet-link') ].forEach( ( element ) => { appendATag(element); } ) } // fuck treewalker function tryAddOpenLinkButton(node) { if (node.nodeType == 1) { for (let i = node.childNodes.length - 1; i >= 0; i--) { if (node.classList.contains('magnet-link')) { appendATag(node); } else { tryAddOpenLinkButton(node.childNodes[i]); } } } } // mutations // callback function cbMutations(mutations, observer) { mutations.forEach((mutation) => { if (mutation.type === 'childList') { mutation.addedNodes.forEach((node) => { if (node.nodeType === Node.ELEMENT_NODE) { if (node.classList.contains(env.isTableView ? 'table-striped' : 'res-detail-ul')) { tryAddOpenLinkButton(node); } } }) } }) } // observer const observer = new MutationObserver(cbMutations); observer.observe(document.body, { childList: true, subtree: true }); console.log('page has been fucked.'); })();