You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中await navigator.clipboard.readText()仍返回[object Promise],如何解决?

问题原因

textCopied是异步函数,调用后返回的是Promise对象,你直接把这个Promise传给e.clipboardData.setData,所以剪贴板里才会显示[object Promise]。虽然你在textCopied内部用了await,但外部调用它的地方没有等待Promise完成就执行了setData操作。

解决方法

把copy事件的回调改成异步函数,等待textCopied执行完成后再设置剪贴板数据:

<html>
This is text

<script>
// 将回调改为async函数
document.addEventListener('copy', async function (e) {
    var result = await textCopied(); // 等待异步函数返回结果
    e.clipboardData.setData('text/plain', result);
    e.preventDefault();
});

async function textCopied() {
    var clipboardContents = await navigator.clipboard.readText();
    return clipboardContents 
}
</script>
</html>
额外优化提示

你当前的代码逻辑是读取剪贴板已有内容再放回,这和“复制选中的文本”需求不符。如果目标是复制选中的this is text,直接获取选中内容更准确,还能避免异步问题:

<html>
This is text

<script>
document.addEventListener('copy', function (e) {
    // 获取页面中选中的文本
    var selectedText = window.getSelection().toString();
    e.clipboardData.setData('text/plain', selectedText);
    e.preventDefault();
});
</script>
</html>

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 13:20:56