您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add copy buttons for input and output
当前为
// ==UserScript== // @name CSES copy button // @namespace https://github.com/zica87/self-made-userscipts // @version 1.0 // @description Add copy buttons for input and output // @author zica // @match https://cses.fi/problemset/task/* // @grant GM_addStyle // @license GPL-3.0 // ==/UserScript== (function () { "use strict"; const cssString = ` .copy-button { margin-left: 0.5em; } .copy-mode { cursor: pointer; } .copied-mode { cursor: unset; } .copied-block{ border: solid #ff9b30; padding: 10px; } `; GM_addStyle(cssString); add_buttons(); function toCopyMode(button, block) { button.textContent = "copy"; button.classList.add("copy-mode"); button.classList.remove("copied-mode"); block.classList.remove("copied-block"); } function toCopiedMode(button, block) { button.textContent = "✅copied"; button.classList.add("copied-mode"); button.classList.remove("copy-mode"); block.classList.add("copied-block"); } function add_buttons() { const blocks = document.getElementsByTagName("pre"); for (const block of blocks) { const button = document.createElement("button"); button.className = "copy-button"; button.onclick = async () => { if (button.textContent[0] === "✅") { return; } try { await navigator.clipboard.writeText(block.textContent); toCopiedMode(button, block); setTimeout(() => { toCopyMode(button, block); }, 3000); } catch (error) { alert(error.message); console.error(error); } }; toCopyMode(button, block); block.previousElementSibling.append(button); } } })();