js复制文本到粘贴板(Clipboard.writeText())

阳光穿透心脏的1/2处 2023-06-13 04:47 75阅读 0赞

前言

js如何复制文本到粘贴板呢,网上所说的各种复制。。在Chrome或者说在我这个项目都没用。

  • windows.copy
  • document.execCommand(“copy”);
  • clipboard.js
  • Clipboard.writeText() ,可行!

网上的代码

通过 document.execCommand('copy') 来操作。

  1. //创建选中范围
  2. var range = document.createRange();
  3. range.selectNode(copyDom);
  4. //移除剪切板中内容
  5. window.getSelection().removeAllRanges();
  6. //添加新的内容到剪切板
  7. window.getSelection().addRange(range);
  8. //复制
  9. var successful = document.execCommand('copy');

通过 window.clipboardData.setData('Text',textVal) 这个 对象来操作的。可是都不work。

  1. /** * 复制代码 */
  2. $('#btnCopy').bind('click', function (e) {
  3. if (!$.isEmptyObject(codeData)) {
  4. //support IE
  5. var clipboardData = window.clipboardData;
  6. //support Chrome/Firefox
  7. if (!clipboardData) {
  8. clipboardData = e.originalEvent.clipboardData;
  9. }
  10. if (!clipboardData) {
  11. console.log(clipboardData);
  12. console.log(clipboardData.getData('text'));
  13. clipboardData.setData('Text', codeData[id]);
  14. }
  15. if(window != undefined){
  16. window.copy($("#genCodeArea").val());
  17. }
  18. }
  19. });

clipboard.js

拷贝文字不应当是一件困难的事. 不需要过多繁杂的配置或者下载很多脚本文件. 最重要的,它不应该依赖flash或者其他框架,应该保持简洁,clipboard.js

  1. 通过cdn引入

  2. 使用功能

  3. 查看效果
    在这里插入图片描述

  4. 这个功能正常是可以的,但是可能我用了CodeMirror或者其他js导致冲突。

Clipboard.writeText()

以下场景是来自CodeGenerator的复制功能:

  1. $('#btnCopy').on('click', function(){
  2. if(!$.isEmptyObject(genCodeArea.getValue())&&!$.isEmptyObject(navigator)&&!$.isEmptyObject(navigator.clipboard)){
  3. navigator.clipboard.writeText(genCodeArea.getValue());
  4. layer.msg("复制成功");
  5. }
  6. });

来源:https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/writeText

兼容性:Chrome66以上/Firefox63以上
在这里插入图片描述

效果展示在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,75人围观)

还没有评论,来说两句吧...

相关阅读