您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
为 Genspark.ai 代码区域添加复制按钮
- // ==UserScript==
- // @name Genspark Code Copy Button
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description 为 Genspark.ai 代码区域添加复制按钮
- // @author Your name
- // @match https://www.genspark.ai/*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- // 添加复制按钮的样式
- const style = document.createElement('style');
- style.textContent = `
- .code-copy-btn {
- position: absolute;
- right: 10px;
- top: 10px;
- padding: 4px 8px;
- background: #f0f0f0;
- border: 1px solid #ddd;
- border-radius: 4px;
- cursor: pointer;
- font-size: 12px;
- opacity: 0.8;
- transition: opacity 0.2s;
- z-index: 100;
- }
- .code-copy-btn:hover {
- opacity: 1;
- }
- .code-block-wrapper {
- position: relative;
- }
- `;
- document.head.appendChild(style);
- // 监听 DOM 变化
- const observer = new MutationObserver((mutations) => {
- mutations.forEach((mutation) => {
- if (mutation.addedNodes.length) {
- addCopyButtons();
- }
- });
- });
- observer.observe(document.body, {
- childList: true,
- subtree: true
- });
- function addCopyButtons() {
- // 只选择代码区域内的代码块
- const codeBlocks = document.querySelectorAll('.hljs');
- codeBlocks.forEach(codeBlock => {
- // 检查是否已经添加过按钮
- if (codeBlock.parentNode.querySelector('.code-copy-btn')) {
- return;
- }
- // 为代码块添加包装器
- const wrapper = document.createElement('div');
- wrapper.className = 'code-block-wrapper';
- codeBlock.parentNode.insertBefore(wrapper, codeBlock);
- wrapper.appendChild(codeBlock);
- // 创建复制按钮
- const copyButton = document.createElement('button');
- copyButton.className = 'code-copy-btn';
- copyButton.textContent = '复制';
- wrapper.appendChild(copyButton);
- // 添加点击事件
- copyButton.addEventListener('click', async () => {
- try {
- await navigator.clipboard.writeText(codeBlock.textContent);
- copyButton.textContent = '已复制!';
- setTimeout(() => {
- copyButton.textContent = '复制';
- }, 2000);
- } catch (err) {
- console.error('复制失败:', err);
- copyButton.textContent = '复制失败';
- setTimeout(() => {
- copyButton.textContent = '复制';
- }, 2000);
- }
- });
- });
- }
- // 初始执行一次
- addCopyButtons();
- })();