在JavaScript中复制字符串

tfa*_*ina 1 javascript

是否可以在剪贴板中放置变量?我看过很多文章都是通过选择DOM元素中存在的文本然后复制它来完成此操作的,这很简单,但是我没有看到复制DOM中没有的内容的文章。
我想要一个包含字符串的变量或常量,然后将其发送到剪贴板,而使其不会出现在浏览器窗口中(甚至是隐藏元素)。我知道使用隐藏元素将是解决此问题的快速方法,但是如果有更简洁的方法,它会显得有些笨拙。

Tha*_*guy 6

您可以使用剪贴板API。它还没有完全的支持,但是还不错。

您可以这样使用它:

navigator.clipboard.writeText("hello from site!")
  .then(() => console.log(`wrote to clipboard!`))
  .catch((error) => console.error(error));
Run Code Online (Sandbox Code Playgroud)

请注意,这仅在当前网站为焦点(文档为焦点)时有效

为了从剪贴板读取,可以使用以下功能:

navigator.clipboard.readText()
  .then(text => console.log(text))
  .catch((error) => console.error(error));
Run Code Online (Sandbox Code Playgroud)

这一项需要两件事才能起作用:

  • 和以前一样,用户需要专注于网站
  • 系统将提示用户确认站点从剪贴板读取的能力(因为它可以包含敏感数据):

    在此处输入图片说明

火狐浏览器

对于Firefox,除了要求用户允许阅读剪贴板外,它还仅允许将其粘贴到textarea中:

Firefox支持版本54中的“ clipboardRead”权限,但仅支持以内容可编辑模式粘贴到元素中,而内容脚本只能与一起使用。对于后台脚本,可以将任何元素设置为内容可编辑模式。