天天看點

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-仿淘寶收貨位址,設定預設位址

源碼會持續更新到公衆号,需要可以關注一下哦…

js相容安卓和IOS的複制文本到剪切闆,已做浏覽器相容處理,勿需插件

繼續閱讀