Telegram 文字複製器

在禁止儲存內容的 Telegram 私密頻道中允許複製文字。

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

作者
STELLAR STELS
今日安裝
0
安裝總數
239
評價
1 0 1
版本
1.0.1
建立日期
2025-07-29
更新日期
2025-07-29
尺寸
12.3 KB
授權條款
GNU GPLv3
腳本執行於

Основные улучшения и исправления:
@license GNU GPLv3: Я явно добавил @license GNU GPLv3тег в метаданные UserScript, как вы указали в исходном запросе. Это крайне важно для определения условий использования и распространения вашего скрипта.

'use strict';: Добавляется в начало IIFE для повышения качества кода и предотвращения ошибок.

Улучшения регистратора :

Метод errorтеперь принимает необязательный errorобъект, что позволяет вести более подробную регистрацию ошибок.

tel_copy_textУлучшения функций :

Проверка пустого текста : добавлена проверка if (!text || text.trim() === "")для предотвращения попыток копирования пустых строк.

Улучшения визуальной обратной связи :

При отображении Copied!или стили Failed!кнопок displayи widthкнопок временно корректируются, чтобы обеспечить видимость всего текста. Затем они восстанавливаются.

Сообщение об ошибке ( Failed!) теперь окрашивается в красный цвет для более четкой обратной связи.

setupCopyListenersУточнения :

Захват целевого контекстного меню : contextmenuпрослушиватель событий теперь проверяет textEl.contains(e.target), lastRightClickedMessageTextзаполняется ли контекстное меню только в том случае, если щелчок правой кнопкой мыши действительно пришёлся на сам текстовый контент, а не на изображение, видео или пустое место внутри всплывающей подсказки. Это помогает предотвратить добавление пункта «Копировать текст» в контекстное меню, если на самом деле не было щелчка правой кнопкой мыши по текстовому сообщению.

ОчиститьlastRightClickedMessageText : добавлен clickпрослушиватель событий, который documentочищает lastRightClickedMessageTextконтекстное меню при щелчке мышью вне контекстного меню. Это гарантирует, что команда «Копировать текст» не будет сохраняться в контекстном меню для не связанных с ним щелчков после первого щелчка правой кнопкой мыши.

Логика кнопки «Копировать при наведении» ( addHoverCopyButtonZ, addHoverCopyButtonK) :

Предотвращение дублирования кнопок : добавлены проверки if (messageEl.querySelector('.tel-copy-button-z'))в if (bubble.querySelector('.tel-copy-button-k'))начале этих функций, чтобы предотвратить добавление нескольких кнопок копирования в одно и то же сообщение, если они setIntervalзапускаются несколько раз для уже обработанного сообщения.

Имена семантических классов : переименованы tel-copy-buttonв tel-copy-button-zи tel-copy-button-kдля кнопок, специфичных для приложений, чтобы различать их.

Плавные переходы : изменено transition: "opacity 0.2s"на transition: "opacity 0.2s ease-in-out"для более плавной анимации.

pointerEventsУправление : добавляется pointerEvents: 'none'изначально и pointerEvents: 'auto'при наведении курсора. Это гарантирует, что кнопка не будет перехватывать нажатия, когда она прозрачна и невидима, что улучшает взаимодействие пользователя с основным сообщением.

Проверка текстового содержимого : добавлено if (!textEl || !textEl.innerText.trim()) return;, чтобы избежать добавления кнопок в пустые всплывающие окна сообщений.

Логика кнопки контекстного меню ( addContextMenuCopyButton) :

Предотвращение дублирования кнопок : добавлено if (menuEl.querySelector('.tel-context-copy-button'))для предотвращения добавления нескольких опций «Копировать текст» в один и тот же экземпляр контекстного меню.

Единообразное позиционирование : добавлена логика для вставки кнопки «Копировать текст» после существующих пунктов «Ответить» или «Переслать» ( replyItem.after(copyButton);) для лучшей интеграции с нативным меню Telegram. Если такой пункт не найден, используется appendChild.

menuEl.remove(): Закомментировал руководство menuEl.remove(), так как собственная обработка контекстного меню Telegram обычно удаляет его, а вмешательство может привести к неожиданному поведению.

Флаги обработки, специфичные для приложения :

Изменено _tel_processedна _tel_processed_zи _tel_processed_kдля сообщений и _tel_processed_z_contextи _tel_processed_k_contextдля контекстных меню. Это гарантирует, что флаги обработки будут разными для каждой версии приложения Telegram Web (Z и K), предотвращая потенциальные конфликты или некорректную обработку при смене пользователем приложения или запуске скрипта в гибридной среде.

Селектор элементов текста сообщения (App-K) :

В App-K Specific Logic, добавлено .message-textк textElселектору запроса: ".message-text, .message .text-content, .message .translatable-message". Это охватывает больше случаев для элементов текста сообщения в Web K.

Эти улучшения делают скрипт более надежным, удобным для пользователя и лучше интегрированным с веб-приложениями Telegram.СЛАВА УКРАИНА