您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Search past conversations with auto-load using up to three scrollbars and keyboard enter support
当前为
- // ==UserScript==
- // @name ChatGPT Conversation Seeker Newer Version
- // @namespace http://tampermonkey.net/
- // @version 0.6
- // @description Search past conversations with auto-load using up to three scrollbars and keyboard enter support
- // @author Emree.el on Instagram :)
- // @match https://chatgpt.com/*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- // Create a container for the search bar and button
- const searchBarContainer = document.createElement('div');
- searchBarContainer.style.position = 'fixed';
- searchBarContainer.style.top = '0';
- searchBarContainer.style.left = 'calc(50% + 280px)';
- searchBarContainer.style.transform = 'translateX(-50%)';
- searchBarContainer.style.zIndex = '9999';
- searchBarContainer.style.background = '#171717';
- searchBarContainer.style.padding = '5px';
- searchBarContainer.style.boxShadow = '0 2px 4px rgba(0,0,0,0.1)';
- searchBarContainer.style.display = 'flex';
- searchBarContainer.style.alignItems = 'center';
- // Create the search input
- const searchInput = document.createElement('input');
- searchInput.type = 'text';
- searchInput.placeholder = 'Enter text to search';
- searchInput.style.marginRight = '5px';
- searchInput.style.padding = '5px';
- searchInput.style.fontSize = '14px';
- searchInput.style.backgroundColor = 'black';
- // Create the search button
- const searchButton = document.createElement('button');
- searchButton.textContent = 'Enter';
- searchButton.style.padding = '5px';
- searchButton.style.fontSize = '14px';
- // Append the input and button to the container
- searchBarContainer.appendChild(searchInput);
- searchBarContainer.appendChild(searchButton);
- // Append the container to the body
- document.body.appendChild(searchBarContainer);
- // Function to continuously scroll down and up an element
- function scrollElement(element, resolve) {
- let lastScrollTop = element.scrollTop;
- const scrollDownInterval = setInterval(() => {
- element.scrollTop += 100;
- if (element.scrollTop === lastScrollTop) {
- clearInterval(scrollDownInterval);
- scrollUp(element, resolve);
- }
- lastScrollTop = element.scrollTop;
- }, 50); // Adjust speed if necessary
- }
- // Function to scroll up an element
- function scrollUp(element, callback) {
- const scrollUpInterval = setInterval(() => {
- element.scrollTop -= 100;
- if (element.scrollTop === 0) {
- clearInterval(scrollUpInterval);
- callback();
- }
- }, 50); // Adjust speed if necessary
- }
- // Function to perform search
- function performSearch() {
- const searchText = searchInput.value.trim().toLowerCase();
- const elements = document.querySelectorAll('a.flex.items-center.gap-2.p-2');
- elements.forEach(element => {
- const text = element.textContent.trim().toLowerCase();
- if (text.includes(searchText)) {
- element.style.display = 'block';
- } else {
- element.style.display = 'none';
- }
- });
- }
- // Function to handle scrolling for up to three scrollable elements
- function handleScrollForElements(elements) {
- if (elements.length === 0) {
- performSearch();
- return;
- }
- let index = 0;
- function scrollNext() {
- if (index < elements.length && index < 3) {
- scrollElement(elements[index], () => {
- index++;
- scrollNext();
- });
- } else {
- performSearch();
- }
- }
- scrollNext();
- }
- // Add event listener to the button
- searchButton.addEventListener('click', function() {
- const scrollableElements = Array.from(document.querySelectorAll('*')).filter(el => el.scrollHeight > el.clientHeight);
- handleScrollForElements(scrollableElements);
- });
- // Add event listener for Enter key press in the search input
- searchInput.addEventListener('keydown', function(e) {
- if (e.key === 'Enter') {
- const scrollableElements = Array.from(document.querySelectorAll('*')).filter(el => el.scrollHeight > el.clientHeight);
- handleScrollForElements(scrollableElements);
- }
- });
- // Automatically trigger loading on page load
- window.addEventListener('load', function() {
- const scrollableElements = Array.from(document.querySelectorAll('*')).filter(el => el.scrollHeight > el.clientHeight);
- handleScrollForElements(scrollableElements);
- });
- })();