当前位置:Gxlcms > html代码 > Html5剪切板功能的实现

Html5剪切板功能的实现

时间:2021-07-01 10:21:17 帮助过:50人阅读

本篇文章主要介绍了Html5剪切板功能的实现代码,内容挺不错的,现在分享给大家,也给大家做个参考。

最近使用Vue开发Line(日韩的一款类似中国微信平台)的内嵌H5.里面的有一个需求就是将当前链接粘贴,然后发送到pc端,在电脑上进行打开。所有搜集找到了一下几种情况:

1.不带input输入框的原生js方法

这种情况适用于复制非输入框中的文本到剪切板

  1. <h1 id="content">被复制的内容</h1>
  2. <button id="button">点击复制</button>
  3. <script>
  4. (function(){
  5. button.addEventListener('click', function(){
  6. var copyDom = document.querySelector('#content');
  7. //创建选中范围
  8. var range = document.createRange();
  9. range.selectNode(copyDom);
  10. //移除剪切板中内容
  11. window.getSelection().removeAllRanges();
  12. //添加新的内容到剪切板
  13. window.getSelection().addRange(range);
  14. //复制
  15. var successful = document.execCommand('copy');
  16. try{
  17. var msg = successful ? "successful" : "failed";
  18. alert('Copy command was : ' + msg);
  19. } catch(err){
  20. alert('Oops , unable to copy!');
  21. }
  22. })
  23. })()
  24. </script>

2.带输入框的原生js方法

用于复制input,textarea中的文本

  1. <input type="text" id="input" value="17373383"> <br>
  2. <button type="button" id="button">复制输入框中内容</button>
  3. <script>
  4. (function(){
  5. button.addEventListener('click', function(){
  6. input.select();
  7. document.execCommand('copy');
  8. alert('复制成功');
  9. })
  10. })()
  11. </script>

这种方法也可以进行延深,充当和方法1一样的用途。动态创建一个input输入框,将其内容置为想复制的内容,最后在将其移除或者隐藏即可。

3.js复制内容到剪贴板插件(clipboard.js)

clipboard.js官网
clipboard.js CDN地址

引用方式:
NPM npm install --save clipboard
CDN <script src="https://cdn.bootcss.com/clipboard.js/2.0.1/clipboard.js"></script>

  1. <!--默认是截取.btn中的 data-clipboard-text的属性值-->
  2. <!-- <button class="btn" data-clipboard-text="3">Copy</button> -->
  3. <!--截取input输入框中的值-->
  4. <input id="foo" value="https://github.com/zenorocha/clipboard.js.git">
  5. <!-- Trigger -->
  6. <button class="btn" data-clipboard-target="#foo">
  7. <img src="assets/clippy.svg" alt="Copy to clipboard">
  8. </button>
  9. <script src="https://cdn.bootcss.com/clipboard.js/2.0.1/clipboard.js"></script>
  10. <script>
  11. var clipboard = new ClipboardJS('.btn');
  12. clipboard.on('success', function (e) {
  13. console.log(e);
  14. });
  15. clipboard.on('error', function (e) {
  16. console.log(e);
  17. });
  18. </script>

里面还有很多高级用法,可以前往官网逻辑更多细节 Clipboard官网

4. Vue框架提供的剪切板插件 vue-clipboard2

  1. import Vue from 'vue'
  2. import VueClipboard from 'vue-clipboard2'
  3. VueClipboard.config.autoSetContainer = true // add this line
  4. Vue.use(VueClipboard)

Sample1

  1. <p id="app"></p>
  2. <template id="t">
  3. <p class="container">
  4. <input type="text" v-model="message">
  5. <button type="button"
  6. v-clipboard:copy="message"
  7. v-clipboard:success="onCopy"
  8. v-clipboard:error="onError">Copy!</button>
  9. </p>
  10. </template>
  11. <script>
  12. new Vue({
  13. el: '#app',
  14. template: '#t',
  15. data: function () {
  16. return {
  17. message: 'Copy These Text'
  18. }
  19. },
  20. methods: {
  21. onCopy: function (e) {
  22. alert('You just copied: ' + e.text)
  23. },
  24. onError: function (e) {
  25. alert('Failed to copy texts')
  26. }
  27. }
  28. })
  29. </script>

Sample2

  1. <p id="app"></p>
  2. <template id="t">
  3. <p class="container">
  4. <input type="text" v-model="message">
  5. <button type="button" @click="doCopy">Copy!</button>
  6. </p>
  7. </template>
  8. <script>
  9. new Vue({
  10. el: '#app',
  11. template: '#t',
  12. data: function () {
  13. return {
  14. message: 'Copy These Text'
  15. }
  16. },
  17. methods: {
  18. doCopy: function () {
  19. this.$copyText(this.message).then(function (e) {
  20. alert('Copied')
  21. console.log(e)
  22. }, function (e) {
  23. alert('Can not copy')
  24. console.log(e)
  25. })
  26. }
  27. }
  28. })
  29. </script>

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

如何通过HTML5触摸事件实现移动端简易进度条

Html5移动端获奖无缝滚动动画实现

html5 touch事件实现触屏页面上下滑动

以上就是Html5剪切板功能的实现的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行