【问题标题】:How can I copy text to the clipboard with JavaScript? [duplicate]如何使用 JavaScript 将文本复制到剪贴板? [复制]
【发布时间】:2021-02-19 17:41:40
【问题描述】:

所有 Youtube 教程似乎都在教授现已弃用的 Document.execCommand()。我试了一下,因为这个 MDN website 上的例子。也许还有其他方法?

navigator.permissions.query({name: "clipboard-write"}).then(result => {
  if (result.state == "granted" || result.state == "prompt") {
    /* write to the clipboard now */
    console.log("safe");
  }
});

let button = document.querySelector('button');

button.addEventListener('click', (e) => {
    let data = "red";
    navigator.clipboard.writeText(data).then(function() {
    /* success */
      console.log("success", data);
    }, function() {
      console.log("fail")
    /* failure */
    });
});
<button>Click me</button>

【问题讨论】:

  • 您的示例代码运行良好;只是不在 IFRAME 内(如 StackOverflow 的代码 sn-ps)。我将它粘贴到 Chrome 中的浏览器控制台中,没有问题。有关何时可以在此处使用剪贴板 API 的更多信息:sitepoint.com/clipboard-api
  • 感谢@JohnUleis 的大力帮助

标签: javascript html


【解决方案1】:

当然,您可以像在问题中那样将文本复制到剪贴板,也可以使用await/async。在下面试试这个。我没有包含查询,因为像 chrome 这样的浏览器并不总是返回正确的权限状态。

let button = document.querySelector('button');
button.onclick = async (e) => {
    let data = "red";
    try {
        await navigator.clipboard.writeText(data);
        console.log("all good")
    }
    catch(err) {
        console.log(err);
    }
}
<button>Click Me!</button>

【讨论】:

    猜你喜欢
    • 2018-06-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 2014-08-31
    相关资源
    最近更新 更多