Как создать ссылку с текстом и вставить ее на рабочий стол телеграммы

Я пытаюсь создать кнопку «Копировать» для использования буфера обмена в разных приложениях.

Я ожидаю, что:

  1. ctrl+v в простом текстовом редакторе создаст простой текст
  2. ctrl+v в RTF (или в приложении с поддержкой «ссылки») создаст ссылку

Вот упрощенный пример кода:

      const aElement = document.createElement('a');
aElement.href = 'https://stackoverflow.com/';
aElement.innerText = 'stackoverflow link';

const data = [
 new ClipboardItem({
  'text/plain': new Blob([aElement.innerText], {type: 'text/plain'}),
  'text/html': new Blob([aElement.outerHTML], {type: 'text/html'}),
 })
];

navigator.clipboard.write(data);

Пример отлично работает везде, кроме настольного приложения Telegram. Я перепробовал все известные мне варианты параметров Blob и ClipboardItem.

Также я пробовал копировать и вставлять ссылки, созданные на рабочем столе телеграммы, и они везде вставляются как ссылки! Структура, которую я вижу, когда копирую ссылку с рабочего стола телеграммы, похожа на мою

Вот упрощенный пример отладки:

      document.body.onclick = () => window.navigator.clipboard.read()
 .then(r => r[0])
 .then(r => r.types.map(t => r.getType(t).then(b => b.text())))
 .then(r => Promise.all(r))
 .then(p => console.log(p))

Что я делаю не так?

1 ответ

Телеграм не вставляетсяtext/htmlиз буфера обмена в сообщения. Убедиться в этом можно, введя в сообщение любой html-код — оно будет прочитано как текст. В вашем случае лучшим вариантом было бы сделать что-то вроде этого:

Другие вопросы по тегам