Telegram 文字複製器

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

作者
STELLAR STELS
今日安裝
1
安裝總數
2
評價
0 0 0
版本
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.СЛАВА УКРАИНА

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址