您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
提取漫猫动漫的磁链并显示复制框,阻止自动跳转
// ==UserScript== // @name 漫猫/miobt动漫磁链提取器 // @namespace http://tampermonkey.net/ // @version 1.0 // @description 提取漫猫动漫的磁链并显示复制框,阻止自动跳转 // @author 你 // @match http://*.kisssub.org/* // @match http://*.comicat.org/* // @match http://*.miobt.com/* // @match https://*.kisssub.org/* // @match https://*.comicat.org/* // @match https://*.miobt.com/* // @include http://*.kisssub.org/* // @include http://*.comicat.org/* // @include http://*.miobt.com/* // @include https://*.kisssub.org/* // @include https://*.comicat.org/* // @include https://*.miobt.com/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // 根据提供的HTML结构配置的选择器 const MAGNET_BUTTON_SELECTOR = 'a#magnet'; // 磁链按钮的选择器(id为magnet的a标签) const MAGNET_ATTR_NAME = 'href'; // 磁链存储在href属性中 // 创建复制弹窗 function createCopyDialog(magnetLink) { // 移除已存在的弹窗 const oldDialog = document.getElementById('magnet-dialog'); if (oldDialog) oldDialog.remove(); // 创建弹窗元素 const dialog = document.createElement('div'); dialog.id = 'magnet-dialog'; dialog.style.cssText = ` position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); padding: 20px; background: white; border: 1px solid #ccc; border-radius: 8px; box-shadow: 0 4px 20px rgba(0,0,0,0.15); z-index: 9999; font-family: Arial, sans-serif; `; const title = document.createElement('h3'); title.textContent = '磁链已提取'; title.style.margin = '0 0 15px 0'; title.style.color = '#333'; const input = document.createElement('input'); input.type = 'text'; input.value = magnetLink; input.style.cssText = ` width: 500px; margin-bottom: 15px; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px; `; input.readOnly = true; input.onclick = () => input.select(); const buttonContainer = document.createElement('div'); buttonContainer.style.textAlign = 'right'; const copyBtn = document.createElement('button'); copyBtn.textContent = '复制磁链'; copyBtn.style.cssText = ` padding: 8px 16px; background: #4285f4; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 14px; margin-right: 10px; `; copyBtn.onclick = () => { input.select(); document.execCommand('copy'); copyBtn.textContent = '已复制!'; copyBtn.style.background = '#34a853'; setTimeout(() => { dialog.remove(); }, 1000); }; const closeBtn = document.createElement('button'); closeBtn.textContent = '关闭'; closeBtn.style.cssText = ` padding: 8px 16px; background: #f8f9fa; color: #333; border: 1px solid #ddd; border-radius: 4px; cursor: pointer; font-size: 14px; `; closeBtn.onclick = () => dialog.remove(); dialog.appendChild(title); dialog.appendChild(input); buttonContainer.appendChild(copyBtn); buttonContainer.appendChild(closeBtn); dialog.appendChild(buttonContainer); document.body.appendChild(dialog); } function setupMagnetListener() { document.querySelectorAll(MAGNET_BUTTON_SELECTOR).forEach(button => { button.addEventListener('click', function(e) { e.preventDefault(); // 阻止默认跳转行为 e.stopPropagation(); // 阻止事件冒泡 const magnetLink = this.getAttribute(MAGNET_ATTR_NAME); if (magnetLink && magnetLink.startsWith('magnet:')) { createCopyDialog(magnetLink); } }, true); }); const observer = new MutationObserver((mutations) => { mutations.forEach(mutation => { mutation.addedNodes.forEach(node => { if (node.nodeType === 1) { // 元素节点 node.querySelectorAll(MAGNET_BUTTON_SELECTOR).forEach(button => { // 避免重复添加事件监听 if (!button.dataset.magnetListener) { button.dataset.magnetListener = 'true'; button.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); const magnetLink = this.getAttribute(MAGNET_ATTR_NAME); if (magnetLink && magnetLink.startsWith('magnet:')) { createCopyDialog(magnetLink); } }, true); } }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); } if (document.readyState === 'complete') { setupMagnetListener(); } else { window.addEventListener('load', setupMagnetListener); } })();