From 7846170122e05570973c434c41d3897b7ad2ccdf Mon Sep 17 00:00:00 2001 From: xcanwin <14187349+xcanwin@users.noreply.github.com> Date: Mon, 20 May 2024 06:28:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=85=8B=E9=9A=86=E5=AF=B9?= =?UTF-8?q?=E8=AF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KeepChatGPT.user.js | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/KeepChatGPT.user.js b/KeepChatGPT.user.js index 42c8b4a..8dbdd93 100644 --- a/KeepChatGPT.user.js +++ b/KeepChatGPT.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name KeepChatGPT // @description 这是一款提高ChatGPT的数据安全能力和效率的插件。并且免费共享大量创新功能,如:自动刷新、保持活跃、数据安全、取消审计、克隆对话、言无不尽、净化页面、展示大屏、拦截跟踪、日新月异、明察秋毫等。让我们的AI体验无比安全、顺畅、丝滑、高效、简洁。 -// @version 28.4 +// @version 28.5 // @author xcanwin // @namespace https://github.com/xcanwin/KeepChatGPT/ // @supportURL https://github.com/xcanwin/KeepChatGPT/ @@ -908,12 +908,6 @@ } } -/*克隆对话*/ -main .text-sm.flex-col>.text-token-text-primary .mx-auto>div:first-child { - user-select: none; - cursor: pointer; -} - /*明察秋毫*/ .kkeenobservation { /*用户气泡优化*/ @@ -1256,6 +1250,7 @@ nav.flex .transition-all { 克隆对话 */ const cloneChat = function(action) { + cloneChat.firstTarget = null; if (action === true) { window.addEventListener('click', cloneChat.listen_Click); } else { @@ -1265,13 +1260,23 @@ nav.flex .transition-all { cloneChat.listen_Click = function(event) { const avatarSelector = "main .text-sm.flex-col>.text-token-text-primary .mx-auto>div:first-child"; - const avatarDiv = findParent(event.target, avatarSelector); + const avatarDiv = findParent(event.target, avatarSelector, 10); if (avatarDiv) { - const contentSelector = ".max-w-full .text-message"; - const content = $(contentSelector, findParent(avatarDiv, "main .text-sm.flex-col>.text-token-text-primary .mx-auto", 2)).innerText.trim(); - $("form.w-full textarea").value = ""; - $("form.w-full textarea").focus(); - document.execCommand('insertText', false, content); + const selectionText = window.getSelection().toString(); + if (selectionText.length === 0) { //未选中文本时 + if (!cloneChat.firstTarget || (cloneChat.firstTarget && cloneChat.firstTarget !== avatarDiv)){ //普通单击时执行克隆,以及选中文本时记录的选中元素与当前单击元素不同时执行克隆 + const contentSelector = ".max-w-full .text-message"; + const content = $(contentSelector, findParent(avatarDiv, "main .text-sm.flex-col>.text-token-text-primary .mx-auto", 2)).innerText.trim(); + $("form.w-full textarea").value = ""; + $("form.w-full textarea").focus(); + document.execCommand('insertText', false, content); + } + cloneChat.firstTarget = null; + } else { //选中文本时记录选中元素 + cloneChat.firstTarget = avatarDiv; + } + } else { + cloneChat.firstTarget = null; } };