用clipboard.js实现文本复制
HTML
render() { return ( <div> {/* 这边是要被复制的内容 */} <div ref={(el) => this.code = el}>{data.code}</div> {/* 复制按钮 */} <button ref={el => (this.copyBtn = el)} className="button-defaul" > 复制 </button> </div> ); }
JS
componentDidMount(){
// 引入clipboard,并且初始化实例
require(['clipboard'], Clipboard => {
this.cellClipboard = new Clipboard(this.copyBtn, {
text: this.getCellClipboardValue // 返回的复制的值
});
});
}
/**
* 复制方法
* @memberof App
* @return string 返回要复制的内容(这边演示的是文本是string类型)
*/
getCellClipboardValue = () => {
const codeDom = this.code;
const cellValue = codeDom.innerHTML;
if (!cellValue) {
alert('没有可复制的内容');
return '';
}
alert(`已复制到剪切板 ${cellValue}`);
return cellValue;
}
清除绑定事件:
componentWillUnmount() {
this.cellClipboard.destroy(); // 事件清理
}
备注:我暂时只试了下文本的,图片的话,我用下面的代码试了下:
<div id="draw-img"> <img src="//cdn2.jianshu.io/assets/web/web-note-ad-1-c2e1746859dbf03abe49248893c9bea4.png" alt="//cdn2.jianshu.io/assets/web/web-note-ad-1-c2e1746859dbf03abe49248893c9bea4.png"/> </div>
require(['clipboard'], Clipboard => { this.cellClipboard = new Clipboard(this.copyBtn, { target: () => document.querySelector('#draw-img') }); });
然后这样我点击复制的话,只能复制img的alt属性的值。
本文详细介绍如何使用clipboard.js库实现在网页上复制文本的功能。通过React组件展示复制按钮及目标文本,利用clipboard.js初始化复制实例,实现点击按钮即可复制指定内容到剪贴板的效果。同时,文章还探讨了复制图片alt属性的局限性。
558

被折叠的 条评论
为什么被折叠?



