您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Delete active chat in Claude.ai sidebar using Ctrl+Shift+Backspace
// ==UserScript== // @name Claude.ai | Remove active (current) chat by CTRL+SHIFT+BACKSPACE // @namespace http://tampermonkey.net/ // @version 1.0 // @description Delete active chat in Claude.ai sidebar using Ctrl+Shift+Backspace // @author Saymonn // @match https://claude.ai/chat* // @icon https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQO8QnSw5ArwqF8PsafiMQ3EsH0Xr9LFLgNpwutam6-FN7UhoQvXeyqIHyNvj907vU5BKU&usqp=CAU // @license MIT // @grant none // ==/UserScript== (function() { 'use strict'; const DELETE_AUTOCONFIRM = false; function waitForElement(selector, timeout = 5000) { return new Promise((resolve, reject) => { const startTime = Date.now(); function check() { const element = document.querySelector(selector); if (element) { resolve(element); } else if (Date.now() - startTime > timeout) { reject(new Error(`Element ${selector} not found within ${timeout}ms`)); } else { setTimeout(check, 50); } } check(); }); } function simulateRealClick(element) { const rect = element.getBoundingClientRect(); const x = rect.left + rect.width / 2; const y = rect.top + rect.height / 2; const events = [ new PointerEvent('pointerdown', { bubbles: true, cancelable: true, pointerId: 1, clientX: x, clientY: y, button: 0 }), new MouseEvent('mousedown', { bubbles: true, cancelable: true, clientX: x, clientY: y, button: 0 }), new PointerEvent('pointerup', { bubbles: true, cancelable: true, pointerId: 1, clientX: x, clientY: y, button: 0 }), new MouseEvent('mouseup', { bubbles: true, cancelable: true, clientX: x, clientY: y, button: 0 }), new MouseEvent('click', { bubbles: true, cancelable: true, clientX: x, clientY: y, button: 0 }) ]; events.forEach(event => element.dispatchEvent(event)); } function findActiveMenuButton() { const listItems = document.querySelectorAll('nav li'); for (let listItem of listItems) { const link = listItem.querySelector('a'); if (link && link.classList.contains('!bg-bg-300')) { const menuButton = listItem.querySelector('button[aria-haspopup="menu"]'); if (menuButton) { return { button: menuButton, listItem: listItem }; } } } return null; } async function deleteActiveChat() { try { const activeElement = findActiveMenuButton(); if (!activeElement) return; const { button: activeMenuButton, listItem } = activeElement; listItem.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true })); listItem.classList.add('group-hover'); await new Promise(resolve => setTimeout(resolve, 100)); simulateRealClick(activeMenuButton); await new Promise(resolve => setTimeout(resolve, 200)); let menuDeleteButton = document.querySelector('[data-testid="delete-chat-trigger"]'); if (!menuDeleteButton) { listItem.dispatchEvent(new MouseEvent('mouseover', { bubbles: true })); listItem.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true })); await new Promise(resolve => setTimeout(resolve, 100)); activeMenuButton.click(); await new Promise(resolve => setTimeout(resolve, 200)); } const deleteButton = await waitForElement('[data-testid="delete-chat-trigger"]', 3000); deleteButton.click(); if (DELETE_AUTOCONFIRM) { const confirmButton = await waitForElement('[data-testid="delete-modal-confirm"]', 3000); confirmButton.click(); } } catch (error) { console.error('Error during chat deletion:', error.message); } } document.addEventListener('keydown', function(event) { if (event.ctrlKey && event.shiftKey && event.code === 'Backspace') { event.preventDefault(); deleteActiveChat(); } }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址