JS 实现点击 “复制” 文本到剪贴板,那个库兼容性最好?

2018-01-17 08:51:21 +08:00
 miniyao
看到有个 clipboard.js 不知道浏览器兼容性好不好,考虑移动浏览器的话,哪个库兼容性最好?
4541 次点击
所在节点    JavaScript
18 条回复
xomix
2018-01-17 08:59:29 +08:00
用 flash 的那几个库浏览器兼容性最好,没有兼容性需求其实都差不多。
yulitian888
2018-01-17 09:01:16 +08:00
mark
一直用 flash 的。
alex321
2018-01-17 09:07:26 +08:00
纯手写 //////

var sbox = document.createElement('input');
sbox.setAttribute('id', 'el');
sbox.setAttribute('value', value);
document.body.appendChild(sbox);

var el = document.getElementById('el');

// check is iOS or not
if(navigator.userAgent.match(/ipad|iphone/i)) {
var editable = el.contentEditable;
var readOnly = el.readOnly;

el.contentEditable = true;
el.readOnly = false;

var range = document.createRange();
range.selectNodeContents(el);

var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);

el.setSelectionRange(0, 999999);
el.contentEditable = editable;
el.readOnly = readOnly;
} else {
el.select();
}

//console.log(window.getSelection().toString());
document.execCommand('Copy', false, null);
MyDaLin
2018-01-17 09:26:14 +08:00
flash 很多浏览器都有提示,不方便
DUSTINTHEWIND
2018-01-17 09:27:51 +08:00
不明白还有这么多人推荐 flash
CDL
2018-01-17 09:33:12 +08:00
移动端还有人推荐 flash 的
attackonFourier
2018-01-17 09:45:12 +08:00
这个需求是个坑啊 clipboard 搞 pc 还是可以 移动端就有点相形见绌了
seki
2018-01-17 09:49:00 +08:00
原理都是生成个 dom,把文字放进去,全选里面的文字,然后发送复制命令。clipboard.js 用的人多兼容性应该不错,但是 api 不好看
hasbug
2018-01-17 09:52:00 +08:00
最近移动端也有需求,IOS 不能 falsh 啦,求个靠谱的。
Blazings
2018-01-17 09:56:03 +08:00
现在还推荐 flash 是 49 年入国军?
ii4Rookie
2018-01-17 10:13:18 +08:00
坐等大牛
ljsh0102
2018-01-17 10:19:48 +08:00
什么?大清都亡了?
ioven
2018-01-17 10:32:39 +08:00
找几个垃圾站看看,最近垃圾站都在自动复制 zhifubao 口令
xiaojie668329
2018-01-17 10:35:45 +08:00
自己手写啊,ios 和 安卓不一样。一个是创建一个 textarea 然后 select() 方法选择文字。一个是使用 selection api。最后执行 execCommand 命令。还有就是 ios 下面的微信浏览器,你复制一次之后,如果不粘贴,是无法进行第二次复制的……
jason19659
2018-01-17 10:39:10 +08:00
clipboard.js? https://t2t2.cc/test.html 之前按照本站贴子写的点击领红包
yasumoto
2018-01-17 10:40:34 +08:00
// 复制
$('.follow__copy').click(function () {
console.log($(this).parent().find('.follow__copy-content')[0])
try {
var range = document.createRange()
var s = window.getSelection()
if(s && s.rangeCount > 0) {
for(var i = 0; i < s.rangeCount; i++) {
s.removeRange(s.getRangeAt(i));
}
}
range.selectNode($(this).parent().find('.follow__copy-content')[0])
s.addRange(range)
if (document.execCommand('copy')) {
tip('复制成功')
} else {
tip('您的浏览器不支持,请手动复制')
}
} catch (e) {
tip('您的浏览器不支持,请手动复制')
}
})

发一个现在自己在用的复制代码把 可以兼容大部分浏览器
iyaozhen
2018-01-17 10:55:25 +08:00
clipboard.js
官网不是说了兼容性嘛,而且都可以测试,看看自己目标用户的 top 环境
onionnews
2018-01-17 10:57:08 +08:00
@ioven 中招过,主要不知道是哪个网站给自动复制的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/423518

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX