我们知道 web复制 chrome给我们提供了
document.execCommand("Copy","false",null); 可以把选中的内容放到剪切板里 所以 面对题目的需求 我们 实现只需要以下步骤 //1禁止编辑
$('#actives-select-w').on('keydown', function (e) { e.preventDefault(); }) 上面有问题, 可以给input加上 readonly 属性 //2 右键全选(注意此处是input的全选)
function documentSelectElement(element) { element.focus(); element.select(); } //3 执行复制
document.execCommand("Copy","false",null); //4。。。然鹅 并没有什么乱用, 经过测试发现 复制命令只针对于input类的输入框无效 //下面请允许插播一下楼主当时的心情 不可能啊?为啥不行呢?我在其他几个页面都可以啊,为啥唯独这个页面不行,而且就一条命令 也不存在写错啊。 我也全选中了啊,为啥ctrl c 就行呢。(当然如果禁止了input的 keydown 事件 Ctrl c 也 狗带了) 最终,楼主只好极不情愿的承认了:好吧 看来这条命令在这里确实无效, 可是 需求还要实现啊,最终机智的我终于不再牛角尖了,下面是解决办法 (思路,既然input不能复制,其他标签可以复制,那我就做一个标签隐藏掉,然后把input的val值拿出来放到隐藏节点 然后在执行复制命令不就好了吗) // 1 2 同上 //其余 见如下代码
let txt = $('#actives-select-w').val(); $('.for-copy-path').html(txt);//全选 documentSelectElement2($('.for-copy-path')[0]) document.execCommand("Copy","false",null);//普通节点的全选function documentSelectElement2(element) { var sel = window.getSelection(); var range = document.createRange(); range.selectNode(element); sel.removeAllRanges(); sel.addRange(range); }