javascript 如何创建文本链接并将其粘贴到Telegram桌面

gkn4icbw  于 2023-04-28  发布在  Java
关注(0)|答案(1)|浏览(135)

bounty还有5天到期。回答此问题可获得+50声望奖励。Kirill正在寻找一个答案从一个有信誉的来源

我试图创建“复制”按钮使用剪贴板在不同的应用程序。
我期望:
1.简单文本编辑器中的ctrl+v将创建纯文本

  1. RTF中的ctrl+v(或支持“链接”的应用程序)将创建链接
    下面是一个简化的代码示例:
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))

我做错了什么?

6vl6ewon

6vl6ewon1#

Telegram不会将text/html从剪贴板插入到消息中。您可以通过在邮件中输入任何HTML代码来验证这一点-它将只将其作为文本阅读。在你的情况下,一个更好的选择是这样做:

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

const textPlainLink = aElement.innerText + ' 👉 ' + aElement.href;

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

navigator.clipboard.write(data);

console.log(textPlainLink)

相关问题