您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在jira上复制id和标题,另外还可以复制评论中的文字
// ==UserScript== // @name jira复制 // @namespace http://tampermonkey.net/ // @version 1.0.6 // @description 在jira上复制id和标题,另外还可以复制评论中的文字 // @author Kovan // @match http://*/browse/INOR* // @icon https://www.google.com/s2/favicons?domain=192.168.0.1 // @grant GM_setClipboard // @license MIT // ==/UserScript== (function() { 'use strict'; const observer = new MutationObserver((mutationsList, observer) => { const targetButton = document.querySelector('button#kk-copy-button'); if(!targetButton){ var elem; var keyVal; var targetNodes; var t_res_message; // 然后页面开始加上自定义元素 let kk_copy_btn_style = document.createElement('style'); kk_copy_btn_style.innerHTML = ` #kk-copy-button { position: relative; z-index: 9999; height: 34px; width: 90px; background-color: #dfe1e5; color: #172b4d; border: none; border-radius: 5px; margin: 0 25px; cursor: pointer; font-size: 14px; font-weight:400; cursor:pointer; transition: background-color 0.5s, color 0.5s; /* 添加过渡效果,0.5秒的过渡时间 */ } #kk-copy-button:hover { background-color: #b3b6bb; /* hover时的背景颜色 */ color: #172b4d; /* hover时的文字颜色 */ } `; document.head.appendChild(kk_copy_btn_style); // 先确定页面元素加载出了 elem = document.getElementById("summary-val"); keyVal = document.getElementById("key-val"); targetNodes = document.querySelectorAll('.action-body'); t_res_message = document.getElementsByClassName('message-container'); // 如果元素都存在 if (elem && keyVal && targetNodes && ((t_res_message.length == 0 && targetNodes.length > 0) || (t_res_message.length > 0))) { // 在标题后增加复制按钮 var kk_copy_btn = document.createElement("button"); kk_copy_btn.id = 'kk-copy-button'; kk_copy_btn.textContent = "COPY"; kk_copy_btn.setAttribute("title", "点击复制问题和ID"); kk_copy_btn.addEventListener('click', () => { // 复制文本 var textToCopy = keyVal.innerText + elem.innerText; GM_setClipboard(textToCopy); showNotification(' 文本已成功复制 '); setTimeout(() => { document.body.removeChild(notificationDiv);// Hide the notification after 3 seconds }, 1500); }); elem.after(kk_copy_btn); // 在每条评论后添加复制按钮 targetNodes.forEach(function(targetNode, index) { const newButton = document.createElement('button'); newButton.textContent = '复制评论'; newButton.setAttribute("name", "kk-response-btn"); newButton.style.position = "absolute"; newButton.style.display = "block"; newButton.style.top = "1px"; newButton.style.right = "4px"; newButton.style.cursor = 'pointer'; targetNode.parentNode.insertBefore(newButton, targetNode); newButton.addEventListener('click', function() { // 复制文本 let textToCopy = targetNode.innerText; textToCopy = textToCopy.replace(/\n\n|\r\n\r\n/g, '\n'); GM_setClipboard(textToCopy); showNotification(' 文本已成功复制 '); setTimeout(() => { document.body.removeChild(notificationDiv);// Hide the notification after 3 seconds }, 1500); }); }); console.log("已添加copy按钮"); let notificationDiv; // Declare notificationDiv globally function showNotification(message) { notificationDiv = document.createElement('div'); notificationDiv.textContent = message; notificationDiv.style.position = 'fixed'; notificationDiv.style.top = '20px'; notificationDiv.style.left = '50%'; notificationDiv.style.transform = 'translateX(-50%)'; notificationDiv.style.padding = '10px'; notificationDiv.style.background = 'rgb(76 175 80 / 67%)'; notificationDiv.style.color = 'white'; notificationDiv.style.borderRadius = '5px'; notificationDiv.style.zIndex = '9999'; notificationDiv.style.pointerEvents = 'none'; // Disable pointer events for the notification notificationDiv.setAttribute('tabindex', '-1'); // Make the div non-focusable notificationDiv.style.outline = 'none'; // Remove visible outline document.body.appendChild(notificationDiv); } } } }); observer.observe(document.body, { childList: true, subtree: true }); })();