复制方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
function copyText(text, callback) { if (navigator.clipboard) { navigator.clipboard.writeText(text); callback && callback(true); return; } }
|
调用方法
相关文章
navigator.clipboard
问题解决
navigator.clipboard Cannot read properties of undefined (reading ‘writeText‘)
本文上述结论在本地运行没有什么问题,但是部署到服务器就会出错,查资料发现是浏览器禁用了非安全域的 navigator.clipboard
对象。所以要解决这个bug就是要做一个兼容写法,在安全域下使用 navigator.clipboard
提升效率,非安全域退回到 document.execCommand('copy');
保证功能一直可用。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| async copyValue(val) { if (navigator.clipboard && window.isSecureContext) { this.$message.success('复制成功') return navigator.clipboard.writeText(val) } else { const textArea = document.createElement('textarea') textArea.value = val document.body.appendChild(textArea) textArea.focus() textArea.select() this.$message.success('复制成功') return new Promise((res, rej) => { document.execCommand('copy') ? res() : rej() textArea.remove() }) } }
|