今天在项目中有一个一键复制的需求,再网上找了很多的资料,发现以下的方法很好的实现了
、、、
//一键复制
function copyLink(){
var e = document.getElementById(“copy”);
e.select(); // 选择对象
document.execCommand("Copy"); // 执行浏览器复制命令
document.activeElement.blur();
}
、、、
满心欢喜的提交测试后,发现以上的代码再android中能完美的实现复制,但是在ios中确实不行的,并且在ios中还会有键盘被唤起一闪而逝的情况。
一点点的排查原因,终于发现实e.select()方法,ios不支持
寻找解决办法,终于找到了,借鉴了下面这位大神的方法
function selectText(textbox, startIndex, stopIndex) {
if(textbox.createTextRange) {//ie
var range = textbox.createTextRange();
range.collapse(true);
range.moveStart('character', startIndex);//起始光标
range.moveEnd('character', stopIndex - startIndex);//结束光标
range.select();//不兼容苹果
}else{//firefox/chrome
textbox.setSelectionRange(startIndex, stopIndex);
textbox.focus();
}
}
作者:VLilyV
来源:优快云
原文:https://blog.youkuaiyun.com/VLilyV/article/details/77523591
此时ios和Android都可以实现复制功能了,但是ios中还是会出现键盘一闪而过的情况,通过给input添加readonly属性得意解决,但是页面底部还是有小小的跳动,如果大家又好的办法,欢迎大家给予好的建议。