您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
点击复制到剪贴板,多次点击多次累积;右下角问号出重置,点重置清理剪贴板。
// ==UserScript== // @name Pinterest Copy Links // @namespace http://leizingyiu.net/ // @version 20241125 // @description 点击复制到剪贴板,多次点击多次累积;右下角问号出重置,点重置清理剪贴板。 // @author leizingyiu // @match *://*.pinterest.*/* // @grant GM_setClipboard // @license GNU AGPLv3 // ==/UserScript== (function () { 'use strict'; let clipboardContent = ''; // 用于累积复制的链接 // let hoverstyle = document.createElement('style'); // hoverstyle.innerText=` // [data-test-id]:hover .copy-link-btn{ // opacity:1; // }`; // document.body.appendChild(hoverstyle); var 样式名称='yiu_pin_copying'; // 为每个项目添加复制链接按钮 function addCopyButton() { if(!document.body.classList.contains(样式名称)){ return ; } const items = document.querySelectorAll('[data-test-id="pin"]'); // 定位到瀑布流项 items.forEach((item) => { // 检查是否已添加按钮 if (item.querySelector('.copy-link-btn')) return; // 获取超链接 const linkElement = item.querySelector('a[href]'); if (!linkElement) return; const href = linkElement.href; // 创建按钮 const copyButton = document.createElement('button'); copyButton.textContent = '复制链接'; copyButton.className = 'copy-link-btn'; copyButton.style.display = 'block'; copyButton.style.marginTop = '8px'; copyButton.style.backgroundColor = '#E60023'; copyButton.style.color = 'white'; copyButton.style.border = 'none'; copyButton.style.borderRadius = '26px'; copyButton.style.padding = '6px 12px'; copyButton.style.cursor = 'pointer'; copyButton.style.fontSize = '14px'; copyButton.style.opacity=0; copyButton.style.transition='opacity ease 0.4s'; // 按钮点击逻辑 copyButton.addEventListener('click', (e) => { // clipboardContent += clipboardContent ? `\n${href}` : href; // 累积链接 clipboardContent=clipboardContent.split('\n'); clipboardContent.push(href); clipboardContent=[...new Set(clipboardContent)]; clipboardContent=clipboardContent.join('\n'); copyButton.style.opacity='0!important'; copyButton.textContent = '复制链接✅'; console.log(copyButton,copyButton.style.opacity); setTimeout(()=>{ copyButton.style.opacity='1!important'; copyButton.textContent = '复制链接'; console.log(copyButton,copyButton.style.opacity); },500); GM_setClipboard(clipboardContent); // 复制到剪贴板 // alert(`链接已复制:\n${href}`); }); // 将按钮插入到项目中 const saveButton = item.querySelector('button'); // 保存按钮 if (saveButton) { saveButton.parentNode.appendChild(copyButton); } setTimeout(()=>{ copyButton.style.opacity=1; },1); }); } // 创建问号和重置按钮 function createResetButton() { // 问号容器 const helpContainer = document.createElement('div'); helpContainer.style.position = 'fixed'; helpContainer.style.bottom = '20px'; helpContainer.style.right = '20px'; helpContainer.style.zIndex = '9999'; helpContainer.style.cursor = 'pointer'; const helpIcon = document.createElement('div'); helpIcon.textContent = '?'; helpIcon.style.width = '40px'; helpIcon.style.height = '40px'; helpIcon.style.borderRadius = '50%'; helpIcon.style.backgroundColor = '#E60023'; helpIcon.style.color = 'white'; helpIcon.style.display = 'flex'; helpIcon.style.justifyContent = 'center'; helpIcon.style.alignItems = 'center'; helpIcon.style.fontSize = '24px'; helpIcon.style.fontWeight = 'bold'; helpIcon.style.transition = 'all 0.3s'; // 重置按钮 const resetButton = document.createElement('button'); resetButton.textContent = '重置剪贴板'; resetButton.style.position = 'absolute'; resetButton.style.width = '10em'; resetButton.style.right = '60px'; resetButton.style.bottom = '0'; resetButton.style.backgroundColor = '#FF4500'; resetButton.style.color = 'white'; resetButton.style.border = 'none'; resetButton.style.borderRadius = '4px'; resetButton.style.padding = '8px 12px'; resetButton.style.cursor = 'pointer'; resetButton.style.fontSize = '14px'; resetButton.style.opacity = '0'; resetButton.style.transition = 'opacity 0.3s'; resetButton.style.pointerEvents = 'none'; // 问号 hover 显示按钮 helpIcon.addEventListener('mouseover', () => { resetButton.style.opacity = '1'; resetButton.style.pointerEvents = 'auto'; }); helpIcon.addEventListener('mouseout', () => { setTimeout(() => { if (!resetButton.matches(':hover')) { resetButton.style.opacity = '0'; resetButton.style.pointerEvents = 'none'; } }, 200); }); // 鼠标移到按钮上保持显示 resetButton.addEventListener('mouseover', () => { resetButton.style.opacity = '1'; resetButton.style.pointerEvents = 'auto'; }); // 重置按钮点击逻辑 resetButton.addEventListener('click', () => { clipboardContent = ''; // alert('剪贴板已清空'); }); helpContainer.appendChild(helpIcon); helpContainer.appendChild(resetButton); document.body.appendChild(helpContainer); } // 初始化 function init() { createResetButton(); setInterval(addCopyButton, 250); // 定时检查新加载的项目 // 监听键盘按键事件 document.addEventListener('keydown', function (event) { if (event.altKey && event.code === 'KeyC') { const body = document.body; if (body.classList.contains(样式名称)) { body.classList.remove(样式名称); } else { body.classList.add(样式名称); } event.preventDefault(); } }); document.body.classList.add(样式名称); } // 延迟等待页面加载完成 window.addEventListener('load', init); })();