JavaScript实现复制或剪切内容到剪贴板功能的方法


Posted in Javascript onMay 23, 2016

项目中需要实现一个点击按钮复制链接的功能,网上看到的几款插件,ZeroClipboard是通过flash实现的复制功能,随着越来越多的提议废除flash,能不能通过JS来实现复制剪切呢,今天分享一个兼容IE7浏览器复制的插件给大家,支持使用javascript实现复制、剪切和粘贴。
方法。

复制

var copy = new clipBoard(document.getElementById('data'), {
  beforeCopy: function() {

  },
  copy: function() {
    return document.getElementById('data').value;
  },
  afterCopy: function() {

  }
});

复制将自动被调用,如果你想要自己调用:

var copy = new clipBoard(document.getElementById('data'));
copy.copyd();

document.getElementById('data') :要获取的对象, 你也可以使用jQuery $('#data')

剪切

基本上与复制的实现方法相同:

var cut = new clipBoard(document.getElementById('data'), {
  beforeCut: function() {

  },
  cut: function() {
    return document.getElementById('data').value;
  },
  afterCut: function() {

  }
});

或者

var cut = new clipBoard(document.getElementById('data'));
cut.cut();
paste

var paste = new clipBoard(document.getElementById('data'), {
  beforePaste: function() {

  },
  paste: function() {
    return document.getElementById('data').value;
  },
  afterPaste: function() {

  }
});

或者

var paste = new clipBoard(document.getElementById('data'));
paste.paste();

完整代码:

(function(name, fun) {
  if (typeof module !== 'undefined' && module.exports) {
    module.exports = fun();
  } else if (typeof define === 'function' && define.amd) {
    define(fun);
  } else {
    this[name] = fun();
  }
})('clipBoard', function() {
  "use strict";

  function clipBoard(tar, options) {
    this.options = options || {};
    this.tar = tar[0] || tar;
    // if options contain copy, copy will be applied soon
    if (this.options.copy) {
      this.copyd();
    }
    if(this.options.cut) {
     this.cut();
    }

    if(this.options.paste) {
     this.paste();
    }
  }

  clipBoard.prototype.copyd = function(value) {
    // before the copy it will be called, you can check the value or modify the value
    if (this.options.beforeCopy) {
      this.options.beforeCopy();
    }
    // if the options set copy function, the value will be set. then get the paramer value.
    // above all, if the value is null, then will be set the tar of value
    value = value || this.tar.value || this.tar.innerText;
    if (this.options.copy) {
      value = this.options.copy();
    }
    // for modern browser
    if (document.execCommand) {
      var element = document.createElement('SPAN');
      element.textContent = value;
      document.body.appendChild(element);
      if (document.selection) {
        var range = document.body.createTextRange();
        range.moveToElementText(element);
        range.select();
      } else if (window.getSelection) {
        var range = document.createRange();
        range.selectNode(element);
        window.getSelection().removeAllRanges();
        window.getSelection().addRange(range);
      }
      document.execCommand('copy');
      element.remove ? element.remove() : element.removeNode(true);
    }
    // for ie
    if (window.clipboardData) {
      window.clipboardData.setData('text', value);
    }
    // after copy
    if (this.options.afterCopy) {
      this.options.afterCopy();
    }
  };

    
   

Javascript 相关文章推荐
图片在浏览器中底部对齐 解决方法之一
Nov 30 Javascript
Node.js抓取中文网页乱码问题和解决方法
Feb 10 Javascript
jQuery ajax分页插件实例代码
Jan 27 Javascript
js实现表格筛选功能
Jan 18 Javascript
解决webpack -p压缩打包react报语法错误的方法
Jul 03 Javascript
判断div滑动到底部的scroll实例代码
Nov 15 Javascript
vue webpack实用技巧总结
Apr 24 Javascript
react中使用css的7中方式(最全总结)
Feb 11 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
Feb 20 Javascript
java和js实现的洗牌小程序
Sep 30 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
Aug 04 Javascript
vue 根据选择的月份动态展示日期对应的星期几
Feb 06 Vue.js
JavaScript的Vue.js库入门学习教程
May 23 #Javascript
详解JavaScript中|单竖杠运算符的使用方法
May 23 #Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
May 23 #Javascript
jQuery Mobile中的button按钮组件基础使用教程
May 23 #Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
May 23 #Javascript
jQuery插件formValidator实现表单验证
May 23 #Javascript
超链接怎么正确调用javascript函数
May 23 #Javascript
You might like
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
PHP错误机制知识汇总
2016/03/24 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
jQuery EasyUI封装简化操作
2016/09/18 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
YUV转为jpg图像的实现
2019/12/09 Python
Python实现验证码识别
2020/06/15 Python
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
英国的领先快速时尚零售商:In The Style
2019/03/25 全球购物
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
新学期红领巾广播稿
2014/01/14 职场文书
学校文明单位申报材料
2014/05/06 职场文书
房地产广告策划方案
2014/05/15 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
2014年民政工作总结
2014/11/26 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL