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 相关文章推荐
javascript add event remove event
Apr 07 Javascript
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
Sep 26 Javascript
JS 字符串连接[性能比较]
May 10 Javascript
基于JS代码实现导航条弹出式悬浮菜单
Jun 17 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
Jul 01 Javascript
javascript轮播图算法
Oct 21 Javascript
Javascript之面向对象--方法
Dec 02 Javascript
Vue.js中组件中的slot实例详解
Jul 17 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
Aug 06 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
Oct 23 Javascript
JS实现图片拖拽交换效果
Nov 30 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
Mar 28 jQuery
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
Zend引擎的发展 [15]
2006/10/09 PHP
phpMyAdmin 安装及问题总结
2009/05/28 PHP
PHP 函数语法介绍一
2009/06/14 PHP
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
php中引用符号(&)的使用详细介绍
2016/12/06 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
javascript function、指针及内置对象
2009/02/19 Javascript
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
Python中map和列表推导效率比较实例分析
2015/06/17 Python
pygame实现简易飞机大战
2018/09/11 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
Python如何将函数值赋给变量
2020/04/28 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
马来西亚户外装备商店:PTT Outdoor
2019/07/13 全球购物
Java平台和其他软件平台有什么不同
2015/06/05 面试题
初三学生个人自我评定
2014/04/06 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers