美文网首页
Javascript复制功能

Javascript复制功能

作者: mocobk | 来源:发表于2020-04-23 12:40 被阅读0次

最近需要使用到Javascript的复制功能。

查询资料,总结如下内容:

有三种主要的浏览器API可复制到剪贴板 (以下在 console 中直接执行是无效的):

1、Async Clipboard API [navigator.clipboard.writeText]

  • 访问是异步的,并且使用JavaScript Promises,可以编写,因此安全用户提示(如果显示)不会中断页面​​中的JavaScript。
  • 文本可以直接从变量复制到剪贴板。
  • 仅在通过HTTPS服务的页面上受支持。
  • 在Chrome 66中,活动标签中的页面可以写入剪贴板而没有权限提示。

2、document.execCommand('copy')

  • 截至2015年4月,大多数浏览器都支持此功能(请参阅下面的浏览器支持)。
  • 访问是同步的,即在页面中停止JavaScript直到完成,包括显示和用户与任何安全提示进行交互。
  • 从DOM中读取文本并将其放置在剪贴板上。
  • 在2015年4月〜测试期间,只有Internet Explorer被记录为在写入剪贴板时显示权限提示。

3、覆盖复制事件

请参阅剪贴板API文档中有关覆盖复制事件的信息

允许您通过任何复制事件来修改剪贴板上显示的内容,可以包括除纯文本之外的其他数据格式。

这里没有涵盖,因为它不能直接回答问题。

在控制台中测试代码时,不要期望剪贴板相关的命令能够正常工作。通常,页面需要处于活动状态(异步剪贴板API)或需要用户交互(例如,用户单击)才能允许(document.execCommand('copy'))访问剪贴板,有关更多详细信息,请参见下文。

下面是一个示例:

function fallbackCopyTextToClipboard(text) {
  var textArea = document.createElement("textarea");
  textArea.value = text;
  
  // Avoid scrolling to bottom
  textArea.style.top = "0";
  textArea.style.left = "0";
  textArea.style.position = "fixed";

  document.body.appendChild(textArea);
  textArea.focus();
  textArea.select();

  try {
    var successful = document.execCommand('copy');
    var msg = successful ? 'successful' : 'unsuccessful';
    console.log('Fallback: Copying text command was ' + msg);
  } catch (err) {
    console.error('Fallback: Oops, unable to copy', err);
  }

  document.body.removeChild(textArea);
}
function copyTextToClipboard(text) {
  if (!navigator.clipboard) {
    fallbackCopyTextToClipboard(text);
    return;
  }
  navigator.clipboard.writeText(text).then(function() {
    console.log('Async: Copying to clipboard was successful!');
  }, function(err) {
    console.error('Async: Could not copy text: ', err);
  });
}

var copyBobBtn = document.querySelector('.js-copy-bob-btn'),
  copyJaneBtn = document.querySelector('.js-copy-jane-btn');

copyBobBtn.addEventListener('click', function(event) {
  copyTextToClipboard('Bob');
});


copyJaneBtn.addEventListener('click', function(event) {
  copyTextToClipboard('Jane');
});

具体运行效果可以在这里看到:https://deanmarktaylor.github.io/clipboard-test/

本文出自:How do I copy to the clipboard in JavaScript?

相关文章

  • Javascript复制功能

    最近需要使用到Javascript的复制功能。 查询资料,总结如下内容: 有三种主要的浏览器API可复制到剪贴板 ...

  • javascript设置网页无法复制

    javascript设置网页无法复制的方法:在JavaScript代码中设置禁用右键菜单、复制、选择等操作,禁用C...

  • 复制功能

    $('.coupon-code').click(function () { var $aux = $('').va...

  • 复制功能

  • 复制功能

  • 前端插件-(clipboard)--复制功能

    clipboard.js是一款轻量级的实现复制文本到剪贴板功能的JavaScript插件。通过该插件可以将输入框,...

  • redis主从复制

    复制 旧版复制功能(2.8版本以前) 同步 命令传播 旧版复制功能的缺陷 初次复制 从服务器从未进行过复制,或者当...

  • redis设计与实现-复制

    复制 redis主从集群使用复制功能实现,复制有如下特性 redis 2.8以前的复制功能不能高效地处理断线后重复...

  • MySQL如何实现高可用

    1.MySQL复制功能介绍 MySQL复制功能提供分担读负载。使用复制功能对数据库服务器进行水平扩展,MySQL的...

  • jdk8日期

    [ ](javascript:void(0); "复制代码") 1 LocalTime nowTi...

网友评论

      本文标题:Javascript复制功能

      本文链接:https://www.haomeiwen.com/subject/mtgoihtx.html