Greasy Fork is available in English.
为nodeseek代码块添加复制按钮
// ==UserScript==
// @name nodeseek复制按钮
// @version 0.1
// @description 为nodeseek代码块添加复制按钮
// @author endercat
// @license MIT
// @match https://www.nodeseek.com/*
// @grant GM_setClipboard
// @namespace http://greasyfork.icu/users/1184905
// ==/UserScript==
(function() {
'use strict';
// 添加复制按钮的函数
function addCopyButton(element) {
// 创建包装器 div
var wrapper = document.createElement('div');
wrapper.style.position = 'relative'; // 设置相对定位
// 创建复制按钮
var copyButton = document.createElement('button');
copyButton.innerHTML = '复制';
copyButton.style.position = 'absolute'; // 设置绝对定位
copyButton.style.right = '0'; // 靠右对齐
copyButton.style.opacity = '0'; // 初始不可见
copyButton.style.transition = 'opacity 0.3s'; // 添加过渡效果
// 添加点击事件以复制代码内容
copyButton.addEventListener('click', function() {
var codeContent = element.textContent;
GM_setClipboard(codeContent);
mscAlert('已复制到剪切板!');
});
// 添加鼠标悬停事件以显示按钮
wrapper.addEventListener('mouseover', function() {
copyButton.style.opacity = '0.5'; // 鼠标悬停时设置透明度为0.5
});
// 添加鼠标离开事件以隐藏按钮
wrapper.addEventListener('mouseout', function() {
copyButton.style.opacity = '0'; // 鼠标离开时设置透明度为0
});
// 将复制按钮添加到包装器中
wrapper.appendChild(copyButton);
// 使用包装器包裹代码块
element.parentNode.insertBefore(wrapper, element);
wrapper.appendChild(element);
}
// 选择页面上的所有代码块
var codeBlocks = document.querySelectorAll('pre code');
// 为每个代码块添加复制按钮
codeBlocks.forEach(function(codeBlock) {
addCopyButton(codeBlock);
});
})();