问题描述 : 代码: navigator.clipboard .writeText('http://go.defino.cn/public?uuid='+data.uuid) .then(() => { l
问题描述 :
代码:
navigator.clipboard .writeText('http://go.defino.cn/public?uuid='+data.uuid) .then(() => { layer.msg("复制成功"); }) .catch(() => { layer.msg("复制失败"); })
测试环境下可以正常复制 ,但放到线上会报错:找不到 .writeText
百度分析:
在 Chrome 的 DevTools 控制台下执行
navigator.clipboard
返回undefined
,经查找资料发现是浏览器禁用了非安全域的navigator.clipboard
对象,哪些地址是安全的呢?安全域包括本地访问与开启TLS安全认证的地址,如
https
协议的地址、127.0.0.1
或localhost
。
解决方案:
if (navigator.clipboard && window.isSecureContext) { navigator.clipboard .writeText('http://go.defino.cn/public?uuid='+data.uuid) .then(() => {layer.msg("复制成功"); }) .catch(() => {layer.msg("复制失败"); }) }else { // 创建text area const textArea = document.createElement('textarea') textArea.value = 'http://go.defino.cn/public?uuid='+data.uuid // 使text area不在viewport,同时设置不可见 document.body.appendChild(textArea) textArea.focus() textArea.select() return new Promise((resolve, reject) => { // 执行复制命令并移除文本框 document.execCommand('copy') ? resolve() : reject(new Error('出错了')) textArea.remove() }).then( () => {layer.msg("复制成功"); }, () => {layer.msg("复制失败"); } )
来源地址:https://blog.csdn.net/weixin_44690195/article/details/128251421
--结束END--
本文标题: js 通过 navigator.clipboard.writeText(textToCopy) 实现复制,测试环境可以,正式环境不行的解决方案。
本文链接: https://lsjlt.com/news/389025.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0