正文
有时会碰到这样的场景:用户看到页面上一段话很精彩,想复制下来:第一个方案是用户自己选择区域,然后右键复制; 第二个方案,就是站点维护人员为方便用户,制作复制按钮,用户点击页面上复制按钮后,内容复制。
下面就针对第二种解决方案给一个前端的js实例,需要提前把clipboard.min.js
文件引入进来:
<div id="copy_str" data-clipboard-text="被复制的内容"></div>
<script>
var clipboard = new Clipboard('#copy_str');
// 复制成功执行的回调,可选
clipboard.on('success', function (e) {
ZENG.msgbox.show("复制成功", 4);
});
// 复制失败执行的回调,可选
clipboard.on('error', function (e) {
ZENG.msgbox.show("复制失败", 5, 2000);
});
</script>
这里用到了 ZENG.msgbox
提示插件。
再举一个js实例:
<P>
用户ID:<?=$item['user_id']?><span class="font-blue" id="sql_copy" data-id="<?=$item['user_id']?>" data-type="user"> 复制 </span>
</P>
<input type="hidden" id="sql_str" data-clipboard-text="被复制的内容">
<script>
$(function(){
/*****复制链接的功能*********/
var clipboard = new Clipboard('#sql_str');
// 复制成功执行的回调,可选
clipboard.on('success', function (e) {
swal('复制成功!', '', 'success');
});
// 复制失败执行的回调,可选
clipboard.on('error', function (e) {
swal('复制失败!', '', 'warning');
});
$(document).on('click', '.class-detail #sql_copy', function () {
var id = $(this).data('id');
var type = $(this).data('type');
if (id == undefined || id == '' || id == 0 || type == undefined || type == '' || type == 0 ) {
swal('未选择或信息异常!', '', 'warning');
} else {
// 拼接页面地址
switch( type )
{
case 'student':
var table = 'user';
break;
}
var sql_str = 'select * from ' + table + ' WHERE id = ' + id;
$('.class-detail #sql_str').attr('data-clipboard-text', sql_str);
// 触发复制
$('#sql_str').click();
}
return false; // 阻止冒泡
});
});
</script>
<P>
用户ID:<?=$item['user_id']?><span class="font-blue" id="sql_copy" data-id="<?=$item['user_id']?>" data-type="user"> 复制 </span>
</P>
<input type="hidden" id="sql_str" data-clipboard-text="被复制的内容">
<script>
$(function(){
/*****复制链接的功能*********/
var clipboard = new Clipboard('#sql_str');
// 复制成功执行的回调,可选
clipboard.on('success', function (e) {
swal('复制成功!', '', 'success');
});
// 复制失败执行的回调,可选
clipboard.on('error', function (e) {
swal('复制失败!', '', 'warning');
});
$(document).on('click', '.class-detail #sql_copy', function () {
var id = $(this).data('id');
var type = $(this).data('type');
if (id == undefined || id == '' || id == 0 || type == undefined || type == '' || type == 0 ) {
swal('未选择或信息异常!', '', 'warning');
} else {
// 拼接页面地址
switch( type )
{
case 'user':
var table = 'user';
break;
}
var sql_str = 'select * from ' + table + ' WHERE id = ' + id;
$('.class-detail #sql_str').attr('data-clipboard-text', sql_str);
// 触发复制
$('#sql_str').click();
}
return false; // 阻止冒泡
});
});
</script>
参考资料
clipboard.js http://www.clipboardjs.cn/
clipboard.js 踩坑 https://blog.csdn.net/weixin_34273046/article/details/91460980
https://blog.csdn.net/qq_37465264/article/details/79892397
https://blog.csdn.net/qq_27682041/article/details/78530582
ZENG-msgbox https://github.com/scepterscythe/ZENG-msgbox
腾讯UED 漂亮的提示信息 https://www.cnblogs.com/zengxiangzhan/archive/2011/09/12/2173939.html