天天看点

使用clipboard.js复制页面内容到剪切板

转载自clipboard.js基本使用

  1. 引入插件
  2. 基本使用
  3. 其他说明
  4. 高级使用
  5. 移动端复制失败
  6. 支持的浏览器

clipboard.js 是一个不需要flash,将文本复制到剪贴板的插件。简单介绍下基本运用。

1 引入插件

<pre>
<script src="js/clipboard.min.js"></script>
</pre>           
  • 1
  • 2
  • 3

2基本使用

首先需要您需要通过传递DOM选择器,HTML元素或HTML元素列表来实例化它。

<pre>
new Clipboard('.btn');
</pre>           
  • 1
  • 2
  • 3

1用一个元素当触发器来复制另一个元素的文本,data-clipboard-target属性后需要跟属性选择器

<pre>
<input id="foo" value="https://github.com/zenorocha/clipboard.js.git">
<button class="btn" data-clipboard-target="#foo">
</button>
</pre>           
  • 1
  • 2
  • 3
  • 4
  • 5

另外还有另外一个属性data-clipboard-action属性,以指定是要要么copy还是要cut操作。默认情况下是copy。cut操作只适用于或元素。

<pre>
<textarea id="bar">Mussum ipsum cacilds...</textarea>
<button class="btn" data-clipboard-action="cut" data-clipboard-target="#bar">
Cut to clipboard
</button>
</pre>           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2从属性中复制文本,不需要另一个元素当触发器,可以使用data-clipboard-text属性,在后面放上需要复制的文本.

<pre>
<button class="btn" data-clipboard-text="Just because you can doesn't mean you should — clipboard.js">
Copy to clipboard
</button>
</pre>           
  • 1
  • 2
  • 3
  • 4
  • 5

返回top

3其他说明

1通过运行检查clipboard.js是否支持Clipboard.isSupported(),返回true则可以使用。

2显示一些用户反馈或捕获在复制/剪切操作后选择的内容。操作,文本,触发元素

<pre>
var clipboard = new Clipboard('.btn');

clipboard.on('success', function(e) {
    console.info('Action:', e.action);
    console.info('Text:', e.text);
    console.info('Trigger:', e.trigger);

    e.clearSelection();
});

clipboard.on('error', function(e) {
    console.error('Action:', e.action);
    console.error('Trigger:', e.trigger);
});
</pre>           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3该插件使用的是事件委托的方式来触发,所以大大减少了对dom的操作。

返回top

4高级使用

如果你不想修改你的HTML,又或者要获取内容的标签是无法被选中【移动端经常遇到的问题】,那么你可以使用一个非常方便的命令API。所以你需要做的是声明一个函数,写下你想要的操作,并返回一个值。下面是一个对不同id的触发器返回不同的值的例子。具体的使用方法请看https://clipboardjs.com

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

    <button id='foo_1' class="btn" data-clipboard-target="#foo"></button>
</body>           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
<script>
new Clipboard('.btn', {
    text: function(trigger) {
        if(trigger.getAttribute('id')=='foo_1'){
            return ;
        }else{
            return ;
        }
    }
});
</script>
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

返回top

5移动端复制失败分析详解

移动端复制失败的原因基本都是要获取的内容无法被选中,如此才获取不到内容,用上面的函数基本可以解决,但亦可看看分析过程。

clipboard.js在移动端复制失败的解决方法

6支持的浏览器

谷歌42+,火狐41+,其他自己查看https://clipboardjs.com

返回top

转载自clipboard.js基本使用