原生的JavaScript怎么实现点击复制功能,但是不能使用 document.execCommand 因为它已经弃用
2条回答 默认 最新
关注 /** * 一键粘贴 * @param {String} id [需要粘贴的内容] * @param {String} attr [需要 copy 的属性,默认是 innerText,主要用途例如赋值 a 标签上的 href 链接] * * range + selection * * 1.创建一个 range * 2.把内容放入 range * 3.把 range 放入 selection * * 注意:参数 attr 不能是自定义属性 * 注意:对于 user-select: none 的元素无效 * 注意:当 id 为 false 且 attr 不会空,会直接复制 attr 的内容 */ function copy (id, attr) { let target = null; if (attr) { target = document.createElement('div'); target.id = 'tempTarget'; target.style.opacity = '0'; if (id) { let curNode = document.querySelector('#' + id); target.innerText = curNode[attr]; } else { target.innerText = attr; } document.body.appendChild(target); } else { target = document.querySelector('#' + id); } try { let range = document.createRange(); range.selectNode(target); window.getSelection().removeAllRanges(); window.getSelection().addRange(range); document.execCommand('copy'); window.getSelection().removeAllRanges(); console.log('复制成功') } catch (e) { console.log('复制失败') } if (attr) { // remove temp target target.parentElement.removeChild(target); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 有偿求苍穹外卖环境配置
- ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
- ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
- ¥15 clousx6整点报时指令怎么写
- ¥30 远程帮我安装软件及库文件
- ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
- ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
- ¥15 Arduino的wifi连接,如何关闭低功耗模式?
- ¥15 Android studio 无法定位adb是什么问题?
- ¥15 C#连接不上服务器,