Html5剪切板功能的实现
本篇文章主要介绍了Html5剪切板功能的实现代码,内容挺不错的,现在分享给大家,也给大家做个参考。
最近使用Vue开发Line(日韩的一款类似中国微信平台)的内嵌H5.里面的有一个需求就是将当前链接粘贴,然后发送到pc端,在电脑上进行打开。所有搜集找到了一下几种情况:
1.不带input输入框的原生js方法
这种情况适用于复制非输入框中的文本到剪切板
<h1 id=content>被复制的内容</h1>
<button id=button>点击复制</button>
<script>
(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!');
}
})
})()
</script>
2.带输入框的原生js方法
用于复制input,textarea中的文本
<input type=text id=input value=17373383> <br>
<button type=button id=button>复制输入框中内容</button>
<script>
(function(){
button.addEventListener('click', function(){
input.select();
document.execCommand('copy');
alert('复制成功');
})
})()
</script>
这种方法也可以进行延深,充当和方法1一样的用途。动态创建一个input输入框,将其内容置为想复制的内容,最后在将其移除或者隐藏即可。
3.js复制内容到剪贴板插件(clipboard.js)
clipboard.js官网
clipboard.js CDN地址
引用方式:
NPM npm install --save clipboardCDN <script src=https://cdn.bootcss.com/clipboard.js/2.0.1/clipboard.js></script>
<!--默认是截取.btn中的 data-clipboard-text的属性值-->
<!-- <button class=btn data-clipboard-text=3>Copy</button> -->
<!--截取input输入框中的值-->
<input id=foo value=https://github.com/zenorocha/clipboard.js.git>
<!-- Trigger -->
<button class=btn data-clipboard-target=#foo>
<img src=assets/clippy.svg alt=Copy to clipboard>
</button>
<script src=https://cdn.bootcss.com/clipboard.js/2.0.1/clipboard.js></script>
<script>
var clipboard = new ClipboardJS('.btn');
clipboard.on('success', function (e) {
console.log(e);
});
clipboard.on('error', function (e) {
console.log(e);
});
</script>
里面还有很多高级用法,可以前往官网逻辑更多细节 Clipboard官网
4. Vue框架提供的剪切板插件 vue-clipboard2
import Vue from 'vue'
import VueClipboard from 'vue-clipboard2'
VueClipboard.config.autoSetContainer = true // add this line
Vue.use(VueClipboard)
Sample1
<p id=app></p>
<template id=t>
<p class=container>
<input type=text v-model=message>
<button type=button
v-clipboard:copy=message
v-clipboard:success=onCopy
v-clipboard:error=onError>Copy!</button>
</p>
</template>
<script>
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')
}
}
})
</script>
Sample2
<p id=app></p>
<template id=t>
<p class=container>
<input type=text v-model=message>
<button type=button @click=doCopy>Copy!</button>
</p>
</template>
<script>
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)
})
}
}
})
</script>
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
如何通过HTML5触摸事件实现移动端简易进度条
Html5移动端获奖无缝滚动动画实现
html5 touch事件实现触屏页面上下滑动
以上就是Html5剪切板功能的实现的详细内容,更多请关注双恒网络其它相关文章!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。



