最近使用vue开发line(日韩的一款类似中国微信平台)的内嵌h5.里面的有一个需求就是将当前链接粘贴,然后发送到pc端,在电脑上进行打开。所有搜集找到了一下几种情况:
1.不带input输入框的原生js方法
这种情况适用于复制非输入框中的文本到剪切板
被复制的内容
点击复制
(function(){
button.addeventlistener('click', function(){
var copydom = document.queryselector('#content');
//创建选中范围
var range = document.createrange();
range.selectnode(copydom);
//移除剪切板中内容
window.getselection().removeallranges();
//添加新的内容到剪切板
window.getselection().addrange(range);
//复制
var successful = document.execcommand('copy');
try{
var msg = successful ? "successful" : "failed";
alert('copy command was : ' + msg);
} catch(err){
alert('oops , unable to copy!');
}
})
})()
2.带输入框的原生js方法
用于复制input,textarea中的文本
复制输入框中内容
(function(){
button.addeventlistener('click', function(){
input.select();
document.execcommand('copy');
alert('复制成功');
})
})()
这种方法也可以进行延深,充当和方法1一样的用途。动态创建一个input输入框,将其内容置为想复制的内容,最后在将其移除或者隐藏即可。
3.js复制内容到剪贴板插件(clipboard.js)
引用方式:
npm npm install --save clipboardcdn
var clipboard = new clipboardjs('.btn');
clipboard.on('success', function (e) {
console.log(e);
});
clipboard.on('error', function (e) {
console.log(e);
});
里面还有很多高级用法,可以前往官网逻辑更多细节 clipboard官网
4. vue框架提供的剪切板插件
import vue from 'vue'
import vueclipboard from 'vue-clipboard2'
vueclipboard.config.autosetcontainer = true // add this line
vue.use(vueclipboard)
sample1
v-clipboard:copy="message"
v-clipboard:success="oncopy"
v-clipboard:error="onerror">copy!
new vue({
el: '#app',
template: '#t',
data: function () {
return {
message: 'copy these text'
}
},
methods: {
oncopy: function (e) {
alert('you just copied: ' + e.text)
},
onerror: function (e) {
alert('failed to copy texts')
}
}
})
sample2
copy!
new vue({
el: '#app',
template: '#t',
data: function () {
return {
message: 'copy these text'
}
},
methods: {
docopy: function () {
this.$copytext(this.message).then(function (e) {
alert('copied')
console.log(e)
}, function (e) {
alert('can not copy')
console.log(e)
})
}
}
})
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。