视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
clipboard.js用html页面复制信息到剪切板
2020-11-27 20:16:13 责编:小采
文档


最近在做一个的智能客服Web端浏览器应用,其中有一项需求是客户在获取系统返回的

答案后点击“复制答案”按钮将答案复制到系统剪切板。本以为这是一个小case,但是发现如果

要对各种主流浏览器都有良好的兼容性并不简单。原因在于出于安全原因,大多数现代浏览

器都未提供通用的剪贴板复制接口(或即便有,也默认被禁用)。

  上网搜索了一下,现有的方案大致有两种:

  一:使用原生javascript中window.clipboardData实现复制到剪贴板功能;

  二:使用Zero Clipboard库;

  在尝试了之后发现现有的方案都不能满足需求。

方案一仅仅支持ie浏览器,在firefox,chrome浏览器上则不起作用。

方案二则是现有绝大多数网站(包括github等)所采取的方案,ZeroClipboard是国外大神开发的一个

用于剪贴板复制的 JS 插件,它是基于 Flash 来实现跨浏览器的复制功能的。当我们使用 ZeroClipboard

的时候,它会悄悄隐藏一个小小的 Flash 影片(swf),不会对我们的用户界面造成影响。我们只需要借助

它实现复制功能就行了。

  ZeroClipboard 中的 "Zero" 指的就是"不可见,零干扰"。

  对此感兴趣的可以参考 http://my.oschina.net/shniu/blog/298406?p=1

  但是在现代浏览器中,flash逐渐没落,firefox浏览器默认不开启flash,所以Zero Clipboard在

兼容方面也表现不佳。

  那么,对于复制到剪切板这种简单的操作有没有一种实现简单,兼容性良好的解决方案呢?有的!那就是github

上的开源项目clipboard.js(官网:http://zenorocha.github.io/clipboard.js/) 官网对于clipboard.js的介绍

非常简单:

  A modern approach to copy text to clipboard No Flash. No dependencies. Just 3kb gzipped

  Copying text to the clipboard shouldn't be hard. It shouldn't require dozens of steps to configure

or hundreds of KBs to load. But most of all, it shouldn't depend on Flash or any bloated framework.

That's why clipboard.js exists.(拷贝文本到剪切板不应该复杂,它不应该需要许多步骤以及几百KB的文件,另

外,它不应该依靠flash以及其他框架,这就是clipboard存在的原因)

下载路径:

应用:

data-clipboard-target attribute 对应需要Copy的html. 可以携带页面的样式,如果保存word。 txt 则无。

样例如下:

<!-- Target -->
<input id="foo" value="https://github.com/zenorocha/clipboard.js.git">

<!-- Trigger -->
<button class="btn" data-clipboard-target="#foo">
<img src="assets/clippy.svg" alt="Copy to clipboard">
</button>

data-clipboard-action attribute 用于区别 copy or cut content。

<!-- Target -->
<textarea id="bar">Mussum ipsum cacilds...</textarea>

<!-- Trigger -->
<button class="btn" data-clipboard-action="cut" data-clipboard-target="#bar">
Cut to clipboard
</button> 

you may expect, the cut action only works on <input> or <textarea> elements.

data-clipboard-text attribute 用于纯文本copy.

<!-- Trigger -->
<button class="btn" data-clipboard-text="Just because you can doesn't mean you should — clipboard.js?1.1.11">
Copy to clipboard
</button>

  

下载本文
显示全文
专题