javascript - 如何将正文中的文本内容复制到剪贴板

标签 javascript clipboard chromium-embedded

我需要将正文中的所有文本复制到剪贴板, 到目前为止,这是我尝试过的:

  • 选择文本节点,然后选择命令 document.execCommand("copy")
  • 选择文本节点,然后使用键盘调度程序:

    $("body").contents().filter(function(){return this.nodeType === 3;}).select();
    document.body.dispatchEvent(new KeyboardEvent("keyup", {bubbles: true, cancelable: false, key: "C", char: "C", ctrlKey: true}));
    

没有弹出错误。我在 Chromium 文档中读到,出于安全原因,复制命令被禁用。知道如何解决这个问题吗?

最佳答案

复制到剪贴板仅适用于真正的用户交互。如果没有真正的用户交互,它通常会失败。我相信这是为了安全措施。 所以把它卡在点击事件上。然后我还建议你使用像 clipboard.js 这样的库解决了不同浏览器的问题,并允许您输入 html 版本和纯文本副本。

如果您使用 clipboard.js,您可以使用如下代码:

plaintext = "boo";
htmltext = "<strong>boo</strong>";
document.getElementById("copybutton").addEventListener('click', function() {
    clipboard.copy({ 
            'text/plain': plaintext,
            'text/html': htmltext
          }).then(
            function(){
                swal({
                    title: "Successfully copied",
                    text: "The thing has been put in your clipboard, happy pasting!",
                    type: "success",
                    closeOnConfirm:true,
                    confirmButtonText: "Ok",
                    timer: 1200
                });
            },
            function(err){
                window.prompt("Something went wrong with automatically copying the data to clipboard.\nPlease press CTRC + C to copy the data",plaintext );
          });
    }
}

关于javascript - 如何将正文中的文本内容复制到剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53497405/

相关文章:

javascript - 是否可以查询背景图像的所有具有行内样式属性的元素?

javascript - 如何向内显示一个div到视口(viewport)

javascript - 为什么 EvaluateScriptAsync 在 CefSharp 中返回空的 Expando 对象

Delphi - 错误代码 126 是什么意思

Javascript递归添加所有 "total"属性并返回给用户

javascript - 如何衡量搜索查询和点击率?

c++ - Linux 和剪贴板

linux - 在基于 Linux 的操作系统中有没有办法确定复制到 X 剪贴板的文本源?

android - 如何将复制的文本传递给 Android 中的其他 Activity

python - 在 macOS 上编译时输入字段不可编辑 + 不稳定的箭头