Javascript复制粘贴脚本库clipboard.js使用示例

clipboard.js不依赖flash,不依赖其他框架,gzip压缩后只有3kb大小。

一、引用clipboard.js

<script src="https://github.com/zenorocha/clipboard.js/blob/master/dist/clipboard.min.js"></script>

二、clipboard.js使用示例

1、从另一个元素复制文本:

<!-- target -->
<input id="foo" value="hello,clipboard.">
<!-- trigger -->
<button class="btn1" data-clipboard-target="#foo">复制到剪贴板</button>
<script>new ClipboardJS('.btn1');</script>

或:
<!-- target -->
<input id="foo" value="hello,clipboard.">
<!-- trigger -->
<button class="btn1">复制到剪贴板</button>
<script>
    new ClipboardJS('.btn1', {
        target: function(trigger) {
            return document.getElementById('foo');
        }
    });
</script>

2、从属性复制文本:

<button id="btn1" data-clipboard-text="hello,clipboard.">复制到剪贴板</button>
<script>new ClipboardJS(document.getElementById('btn1'));</script>

或:
<button id="btn1">复制到剪贴板</button>
<script>
    new ClipboardJS(document.getElementById('btn1'), {
        text: function(trigger) {
            return "hello,clipboard.";
        }
    });
</script>

如果data-clipboard-text的值是动态赋值且比较耗时,可能导致复制的结果不正确,下边是我想到的一种解决方案:

<button class="btn1" style="display: none;" data-clipboard-text=""></button>
<script>new ClipboardJS(".btn1");</script>

<button id="todo">复制到剪贴板</button>

<script>
    $(document).ready(function(){
        $("#todo").click(function(){
            //todo...
            let text = (new Date()).getTime();
            
            $(".btn1").attr("data-clipboard-text", text);
            $(".btn1").click();
        });
    });
</script>

3、监听success和error事件反馈复制结果:

<button id="btn1" data-clipboard-text="hello,clipboard.">复制到剪贴板</button>

<script>
    var clipboard = new ClipboardJS(document.getElementById('btn1'));

    clipboard.on('success', function(e) {
        alert("复制成功!");
        e.clearSelection();
    });

    clipboard.on('error', function(e) {
        alert("复制失败,按 Ctrl+C 复制文字。");
    });
</script>


参考资料

[1].clipboard.js中文网:http://www.clipboardjs.cn/

评论: 0 | 引用: 0 | 查看次数: 2370
发表评论
登录后再发表评论!