js web前端复制内容到剪切板 报错
温馨提示:
本文最后更新于 2023年08月06日,已超过 504 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
前言
最近项目开发需要一个点击复制到浏览器的功能,查过网上的资料大多都是直接亮出代码,但是你复制粘贴过来发现好像不好使,这是为啥呢?没有发现说明复制到剪切板的前提条件,自己根据 一些开发经验总结并验证后记录下来给大家查阅吧。
正题
1.运行环境
:white_check_mark: vue3.0+
:white_check_mark: vite2.0+
:white_check_mark: edge/chorme version 100+
:white_check_mark: window 10
2. js复制到剪切板条件
1.url协议
2.当前运行时
通过js复制文本到电脑系统中的剪切板的前提条件是你当前页面url的协议,只有在http://localhost或https协议下以及当前运行时才能成功复制到系统中的剪切板。
3.实现代码
export const copyText = async (text: string) => {
try {
if (navigator && 'clipboard' in navigator) { // localhost 或 https 协议可用
await navigator.clipboard.writeText(text)
} else {
const input = document.createElement('textarea')
input.value = text
document.body.appendChild(input)
input.select()
input.focus()
// 实测在vue3的开发模式下,也是复制失败的,但是上线部署后https协议复制成功
document.execCommand('copy')
document.body.removeChild(input)
}
return true
} catch (error) {
console.log(error);
return false
}
}
// 使用
copyText('test')
(未完待续,只要注意以上问题,就可以避免复制失败)
正文到此结束
- 本文标签: web前端 vue
- 本文链接: https://wangtianping.com/article/7
- 版权声明: 本文由王先生原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
热门推荐
相关文章
该篇文章的评论功能已被站长关闭