JavaScript实现复制或剪切内容到剪贴板功能的方法
来源: 阅读:903 次 日期:2016-06-25 11:26:40
温馨提示: 小编为您整理了“JavaScript实现复制或剪切内容到剪贴板功能的方法”,方便广大网友查阅!

这篇文章主要介绍了JavaScript实现复制或剪切内容到剪贴板功能的方法,我们平时看到的网页上很多一键复制功能就是如此实现,需要的朋友可以参考下

项目中需要实现一个点击按钮复制链接的功能,网上看到的几款插件,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();

    }

  };

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map