您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
特定の要素からテキストをコピーするボタンを追加します。
当前为
// ==UserScript== // @name Gemini Copy Text Button // @namespace https://qestir.hatenablog.com/entry/2024/06/23/153328 // @match https://gemini.google.com/* // @grant none // @version 1.2 // @description 特定の要素からテキストをコピーするボタンを追加します。 // @author Qestir // @license GPL-3.0-or-later // // ==/UserScript== // スクリプトを実行する関数 (function() { // テキストをコピーする関数 function copyTextToClipboard(text) { // 一時的なテキストエリアを作成 var textArea = document.createElement("textarea"); textArea.value = text; // テキストエリアをドキュメントに追加 document.body.appendChild(textArea); // テキストを選択 textArea.select(); try { // クリップボードにコピー var successful = document.execCommand('copy'); var msg = successful ? '成功' : '失敗'; console.log('テキストのコピーに' + msg + 'しました'); } catch (err) { console.error('テキストのコピーに失敗しました', err); } // テキストエリアをドキュメントから削除 document.body.removeChild(textArea); } // テキストをコピーするボタンを作成する関数 function createCopyButton(targetElement) { // コピー用ボタンを作成 var button = document.createElement("button"); button.textContent = "コピー"; button.style.marginLeft = "10px"; button.style.padding = "5px 10px"; button.style.backgroundColor = "#4CAF50"; button.style.color = "white"; button.style.border = "none"; button.style.borderRadius = "5px"; button.style.cursor = "pointer"; // ボタンにホバースタイルを追加 button.addEventListener("mouseover", function() { button.style.backgroundColor = "#45a049"; }); button.addEventListener("mouseout", function() { button.style.backgroundColor = "#4CAF50"; }); // ボタンがクリックされた時の処理 button.addEventListener("click", function() { // query-textクラスのテキストのみを取得 var textElement = targetElement.querySelector(".query-text"); if (textElement) { var text = textElement.textContent; copyTextToClipboard(text); } }); // 対象の要素にボタンを追加 targetElement.appendChild(button); } // 特定のクラス名の要素にボタンを追加する関数 function addCopyButtons() { var userQueryElements = document.querySelectorAll("user-query"); userQueryElements.forEach(function(element) { if (!element.querySelector("button")) { createCopyButton(element); } }); } // MutationObserverの設定 var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { mutation.addedNodes.forEach(function(node) { if (node.nodeType === 1) { // 要素ノードの場合 var userQueryElements = node.querySelectorAll("user-query"); userQueryElements.forEach(function(element) { createCopyButton(element); }); } }); }); }); // 監視を開始 observer.observe(document.body, { childList: true, subtree: true }); // 初回実行 addCopyButtons(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址