您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a character counter to message fields on chatgpt.com
- // ==UserScript==
- // @name ChatGPT Character Counter
- // @namespace https://leaked.tools/
- // @version 1.4
- // @description Adds a character counter to message fields on chatgpt.com
- // @author Sango
- // @match *://chatgpt.com/*
- // @icon https://www.google.com/s2/favicons?sz=64&domain=chatgpt.com
- // @license MIT
- // @grant none
- // ==/UserScript==
- (function () {
- 'use strict';
- const maxCharacters = 32732;
- function addCharacterCounter(element, position) {
- // Avoid adding multiple counters to the same element
- if (position.previousElementSibling && position.previousElementSibling.classList.contains('character-counter')) {
- return;
- }
- // Create the counter element
- const counter = document.createElement('div');
- counter.className = 'character-counter flex items-center justify-center';
- counter.style.fontSize = '14px';
- counter.style.color = '#555';
- counter.style.marginRight = '5px';
- counter.textContent = `0/${maxCharacters}`;
- // Insert the counter before the element
- position.insertAdjacentElement('beforebegin', counter);
- // Update the counter when the content changes
- const updateCounter = () => {
- const content = element.value || element.textContent.trim();
- const currentLength = content.length;
- counter.textContent = `${currentLength}/${maxCharacters}`;
- // Change color if limit exceeded
- if (currentLength > maxCharacters) {
- counter.style.color = '#ffa700';
- } else {
- counter.style.color = '#555';
- }
- };
- // Listen for content changes
- if (element.tagName.toLowerCase() === 'textarea') {
- element.addEventListener('keyup', updateCounter);
- } else {
- const observer = new MutationObserver(updateCounter);
- observer.observe(element, { childList: true, subtree: true, characterData: true });
- }
- updateCounter(); // Initialize the counter
- }
- function observeFields() {
- const observer = new MutationObserver(() => {
- const editableDivs = document.querySelectorAll('div[contenteditable="true"]');
- editableDivs.forEach((editableDiv) => {
- if (!editableDiv.dataset.counterAdded) {
- editableDiv.dataset.counterAdded = true; // Mark this div as processed
- addCharacterCounter(editableDiv, editableDiv.parentElement.parentElement.parentElement.parentElement.querySelector(".flex.gap-x-1:last-of-type>.min-w-8"));
- }
- });
- const textareas = document.querySelectorAll('textarea:not([placeholder="Message ChatGPT"])');
- textareas.forEach((textarea) => {
- if (!textarea.dataset.counterAdded) {
- textarea.dataset.counterAdded = true; // Mark this textarea as processed
- addCharacterCounter(textarea, textarea.parentElement.parentElement.parentElement.querySelector(".flex.justify-end>.btn"));
- }
- });
- });
- observer.observe(document.body, { childList: true, subtree: true });
- }
- observeFields();
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址