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

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

复制

rush:js;"> var copy = new clipBoard(document.getElementById('data'),{ beforecopy: function() {

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

}
});

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

rush:js;"> var copy = new clipBoard(document.getElementById('data')); copy.copyd();

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

剪切

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

rush:js;"> var cut = new clipBoard(document.getElementById('data'),{ beforeCut: function() {

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

}
});

或者

rush:js;"> 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() {

}
});

或者

rush:js;"> var paste = new clipBoard(document.getElementById('data')); paste.paste();

完整代码

rush:js;"> (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();
}
};

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...