原生js实现点击复制文本,兼容ios

最近做手机端H5网页,需要点击内容进行复制,纯JS实现

以下是效果图

 

代码实现---新建html文件,拷贝代码,即可查看效果

<!DOCTYPE html>
<html>
<head>
    <title>复制</title>
    <meta charset="utf-8">
    <meta name="viewport"
          content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <style type="text/css">
        .container {
            text-align: center;
        }

        .card {
            width: 76vw;
            height: auto;
            padding: 5vw 0vw 5vw 5vw;
            text-align: left;
            margin: 5vw;
            border: 1px solid #ddd;
            background: #f2f2f2;
        }

    </style>
    <script type="text/javascript">
        /**
         * 剪贴板
         * @param text
         */
        function clipBoard(text) {
            const body = document.body;
            const input = document.createElement("input");
            body.append(input);
            input.style.opacity = 0;
            input.value = text;
            input.select();
            input.setSelectionRange(0, input.value.length);
            document.execCommand("Copy");
            input.blur();
            input.remove();
        }


        /**
         * 消息提示框
         * @param msg
         * @param type: default success error
         */
        function message(msg, type) {
            if (!msg) return;
            const body = document.body;
            const messageBox = document.createElement("div");
            messageBox.style.position = 'fixed';
            messageBox.style.top = '20px';
            messageBox.style.left = '0px';
            messageBox.style.right = '0px';
            messageBox.style.zIndex = 999;
            messageBox.style.fontSize = '16px';
            const message = document.createElement("div");
            switch (type || '') {
                case 'success':
                    message.style.width = '260px';
                    message.style.margin = '0 auto';
                    message.style.padding = '10px 30px';
                    message.style.border = '1px solid #e5f3da';
                    message.style.borderRadius = '5px';
                    message.style.background = '#f2f9ec';
                    message.style.color = '#7ec050';
                    break;
                case 'error':
                    message.style.width = '260px';
                    message.style.margin = '0 auto';
                    message.style.padding = '10px 30px';
                    message.style.border = '1px solid #f9e3e3';
                    message.style.borderRadius = '5px';
                    message.style.background = '#fcf1f0';
                    message.style.color = '#e47471';
                    break;
                default:
                    message.style.width = '260px';
                    message.style.margin = '0 auto';
                    message.style.padding = '10px 30px';
                    message.style.border = '1px solid #eceef5';
                    message.style.borderRadius = '5px';
                    message.style.background = '#eef2fb';
                    message.style.color = '#919399';
            }
            message.innerHTML = msg;
            messageBox.append(message);
            body.append(messageBox);
            setTimeout(() => {
                messageBox.remove();
            }, 1500);
        }

        function copy() {
            clipBoard('世界您好');
            message('复制成功', 'success');
        }
    </script>
</head>
<body>
<div class="container">
    <div>
        <div>
            <div class="card" onclick="copy()">
                <div id="text">世界您好</div>
                <div>
                </div>
            </div>
        </div>
    </div>
</div>
</body>
</html>

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值