js兼容安卓和IOS的复制文本到剪切板,已做浏览器兼容处理,勿需插件

开发需求:手机端,点击按钮实现需复制的文本内容;
案例已做手机端浏览器兼容处理经测试,[QQ,微信,苹果,360,UC等],可正常使用;

案例代码如下:****(使用时:请调试到手机模式)

案列1:单个复制


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="screen-orientation" content="portrait">
    <meta name="format-detection" content="telephone=no">
    <meta name="browsermode" content="application">
    <meta name="x5-page-mode" content="app">
    <title>手机端文案复制</title>
    <style>
        body{ max-width: 640px; margin: 0 auto;}
        .copy-pp{ color: #666; line-height: 1.2;}
        .copy-btn{ background-color: cornflowerblue; color: #fff;}
        .copy-text{ opacity: 0;}
    </style>
</head>
<body>

<!--使用时:请调试到手机模式:-->

<div class="copy-pp" id="copy-pp">
    即使是一块牛肉,也应该有自己的态度,要慎其独,要善其身,要知道精彩的人生不能只有精肉,
    还要有适宜的肥油做调配,有雪白的肉筋做环绕,并且还要掌握跳进煎锅时的角度,姿势,以及火候,
    才能最终成为一块优秀道地的西冷牛排~
</div>

<button type="button" class="copy-btn" id="copy-btn" onclick="jsCopy(this)">点击复制分享链接</button>

<textarea class="copy-text" id="copy-text" value="" readonly="readonly"></textarea>

<script>
    function jsCopy(obj){
        var u = navigator.userAgent;
        //苹果
        if (u.match(/(iPhone|iPod|iPad);?/i)) {
            var copyDOM = document.getElementById("copy-pp");  //要复制文字的节点
            var range = document.createRange();
            // 选中需要复制的节点
            range.selectNode(copyDOM);
            // 执行选中元素
            window.getSelection().addRange(range);
            // 执行 copy 操作
            var successful = document.execCommand('copy');
            try {
                var msg = successful ? '成功' : '失败';
                console.log(msg);
            } catch(err) {
                console.log(err);
            }
            // 移除选中的元素
            window.getSelection().removeAllRanges();
            obj.innerHTML = '已复制';
        }

        // 安卓
        if(u.indexOf('Android') > -1 ){
            var $copyText = document.getElementById("copy-text"),
                $copyPP = document.getElementById("copy-pp");
            $copyText.innerHTML = $copyPP.innerHTML.replace(/<[^>]+>/g,"");
            $copyText.select(); // 选择对象
            document.execCommand("Copy"); // 执行浏览器复制命令
            obj.innerHTML = '已复制';
        }
        // 安卓系统的UC浏览器
        if(u.indexOf('Android') > -1 && u.indexOf('UCBrowser') > -1){
            obj.innerHTML = '点击复制分享链接';
            alert('若点击复制分享链接无效,请长按内容手动复制!');
        }
    }
</script>

</body>
</html>

案列2:多个复制

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="screen-orientation" content="portrait">
    <meta name="format-detection" content="telephone=no">
    <meta name="browsermode" content="application">
    <meta name="x5-page-mode" content="app">
    <title>手机端文案复制</title>
    <style>
        body{ max-width: 640px; margin: 0 auto;}
        ul,li{ list-style: none; padding: 0; margin: 0;}
        .copy-demo{ width: 100%; height: auto; overflow: hidden;}
        .li{ padding: 20px; border-bottom: 1px solid #f0f0f0; overflow: hidden;}
        .copy-pp{ color: #666; line-height: 1.2;}
        .copy-btn{ background-color: cornflowerblue; color: #fff;}
        .copy-text{ opacity: 0;}
    </style>
</head>
<body>

<!--使用时:请调试到手机模式:-->

<!--copy-demo-->
<section class="copy-demo">
    <ul class="ul">
        <li class="li">
            <div class="copy-pp" >
                1.上得了厅堂,下得了厨房,杀得了木马,翻得了围墙,开得了汽车,买得起洋房,斗得了小三,打得赢流氓。
            </div>
            <button type="button" class="copy-btn js-copy-btn">点击复制文字</button>
            <textarea class="copy-text" value="" readonly="readonly"></textarea>
        </li>
        <li class="li">
            <div class="copy-pp" >
                2.人的一生都会扮演很多角色,如果你不高兴,你可以把剧本扔了。不过记住,有一份剧本是真真属于你的,千万别丢错了。
            </div>
            <button type="button" class="copy-btn js-copy-btn">点击复制文字</button>
            <textarea class="copy-text" value="" readonly="readonly"></textarea>
        </li>
        <li class="li">
            <div class="copy-pp" >
                3.现在演戏的都去唱歌了,唱不了歌的都去写书了,写不了书的都去演戏了,演不了戏的就又去唱歌了。演艺圈是个圈嘛。
            </div>
            <button type="button" class="copy-btn js-copy-btn">点击复制文字</button>
            <textarea class="copy-text" value="" readonly="readonly"></textarea>
        </li>

    </ul>
</section>


<script type="text/javascript">
    // 复制文案功能:
    const jsCopy = function(obj) {

        function fn() {
            var u = navigator.userAgent;
            //苹果
            if (u.match(/(iPhone|iPod|iPad);?/i)) { //ios
                //   alert('苹果啊');
                //要复制文字的节点
                var copyDOM = obj.parentNode.children[0];

                var range = document.createRange();
                // 选中需要复制的节点
                range.selectNode(copyDOM);
                // 执行选中元素
                window.getSelection().addRange(range);
                // 执行 copy 操作
                var successful = document.execCommand('copy');
                try {
                    var msg = successful ? 'successful' : 'unsuccessful';
                    console.log('copy is' + msg);
                } catch(err) {
                    console.log('Oops, unable to copy');
                }
                // 移除选中的元素
                window.getSelection().removeAllRanges();
                obj.innerHTML = '已复制'

            }
            // 安卓
            if(u.indexOf('Android') > -1 ){
                //alert('安卓啊');
                var $copyPP = obj.parentNode.children[0],
                    $copyText = obj.parentNode.children[2];
                $copyText.innerHTML = $copyPP.innerHTML.replace(/<[^>]+>/g,"");

                $copyText.select(); // 选择对象
                document.execCommand("Copy"); // 执行浏览器复制命令
                obj.innerHTML = '已复制';
            }
            // 安卓系统的UC浏览器
            if(u.indexOf('Android') > -1 && u.indexOf('UCBrowser') > -1){
                obj.innerHTML = '点击复制文案';
                alert('若点击复制文案无效,请长按内容手动复制!');
            }
        }

        obj.addEventListener('click', fn, false);
    };

    //
    let copyBtns = document.querySelectorAll('.js-copy-btn');
    copyBtns.forEach((obj) => {
        jsCopy(obj);

    });
</script>

ps:
js复制页面内容-图片文字-插件clipboard.js
vue-仿淘宝收货地址,设置默认地址

源码会持续更新到公众号,需要可以关注一下哦…
在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值