最近公司须要作一个js实现复制的功能,原本觉得会是很简单两三行js代码的事,后来发现网上说的那些原生js实现复制的方法不少浏览器由于安全的缘由都不支持了,尝试了很长时间,仍是死心了,决定使用第三方的js库。
最早看了利用flash技术的ZeroClipboard,体积庞大很差用放弃了。
最终选择了不依赖flash轻量级js库clipBoard,官网地址https://clipboardjs.com/浏览器
使用很简单
第一步:引入js库 <script src="../dist/clipboard.min.js"></script>
第二步:定义标签(通常是触发复制的按钮)<button class="btn">Copy</button>
第三步:实例化clipboard,调用构造函数var clipboard = new Clipboard('.btn');
安全
结合官方给的demo看一下几种场景函数
var clipboard = new Clipboard('.btn', { text: function() { return 'to be or not to be'; } });
点击button,'to be or not to be'会粘贴到剪贴板code
第一种方法构造函数里定义targetip
<div>hello</div> var clipboard = new Clipboard('.btn', { target: function() { return document.querySelector('div'); } });
点击button,'hello'会粘贴到剪贴板get
还有第二种方法在button里定义属性data-clipboard-target和data-clipboard-actioninput
<div>hello</div> <button class="btn" data-clipboard-action="copy" data-clipboard-target="div">Copy</button> var clipboard = new Clipboard('.btn');
一样的,点击button,'hello'会粘贴到剪贴板回调函数
input和textarea用法相似flash
<input id="foo" type="text" value="hello"> <button class="btn" data-clipboard-action="copy" data-clipboard-target="#foo">Copy</button>
<textarea id="bar">hello</textarea> <button class="btn" data-clipboard-action="cut" data-clipboard-target="#bar">Cut</button>
最重要的一点clipboard还定义了复制成功/失败的回调函数,方便咱们去处理后面的逻辑io
clipboard.on('success', function(e) { console.log(e); }); clipboard.on('error', function(e) { console.log(e); });
完。