HTML頁面---複製按鈕的使用(包含彈層)

先說一下個人總體方案:

  1. 用到了clipboard插件,官方地址github地址,也能夠參考中文說明javascript

  2. clipboard插件實測:在PC端的瀏覽器(試了mac上的safari,chrome,firefox)可用,iOS 10.3上的safari可用,手機上的微信QQ瀏覽器能用,安卓手機自帶的瀏覽器以及UC,不可用。因此對不可用的設備,採用彈層,長按手動複製的方法。php

  3. 這裏須要注意一點,當須要獲取的 標籤 爲dispaly:none 的時候data-clipboard-target的方式得不到值,可用data-clipboard-text結合下面的方法。css

var getContent=document.getElementById("divContent").innerHTML;
document.getElementById("copy-button").setAttribute("data-clipboard-text", getContent);

代碼以下:

<!DOCTYPE html>
<html lang="zh-Hans">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
        <title>複製</title>
        <style type="text/css">
            .show {
                display: block;
            }
            .hidden {
                display: none;
            }
            #divLayer {
                background-color: rgba(204, 204, 204, 0.7); 
                width: 100%;
                height: 100%;
                position: fixed; /* 用absolute的話,當頁面過長,下面的部分不會覆蓋。*/
                left: 0px;
                top: 0px;
            }
            #centerLayer {
                background-color: white;
                margin-top: 150px;
                width: 100%;
                height: 208px;
                text-align: center;
            }
        </style>
        <script type="text/javascript">
            function showLayer() {
                document.getElementById("divLayer").className="show";
            }
            function closeLayer() {
                document.getElementById("divLayer").className="hidden";
            }
        </script>
    </head>

    <body>
        <div id="divLayer" class="hidden">
            <div id="centerLayer">
                <div style="height: 20px; padding-top:8px; padding-bottom: 8px;">請長按選中下面虛線框中的內容進行復制:</div>
                <div id="showContent" style="border: 1px gray dashed; height: 120px; padding-top: 8px;">
                    <span id="divContent">hello world!</span>
                </div>
                <button id="closeButton" onclick="closeLayer()" style="border: 1px gray solid; margin-top: 10px;">點擊關閉</button>
            </div>
        </div>
        
        <button id="copy-button" class="btn" data-clipboard-action="copy" data-clipboard-text="text!">複製</button>
        <script type="text/javascript" src="clipboard.min.js"></script>
        <script>

            //dispaly:none 的時候 data-clipboard-target 得不到值,因此經過下面的方法更改。
            var getContent=document.getElementById("divContent").innerHTML;
            document.getElementById("copy-button").setAttribute("data-clipboard-text", getContent);

            var clipboard = new Clipboard('#copy-button');
            clipboard.on('success', function(e) {
                console.info('Action:', e.action);
                console.info('Text:', e.text);
                console.info('Trigger:', e.trigger);
                e.clearSelection();  //清除選擇
            });
            clipboard.on('error', function(e) {
                console.error('Action:', e.action);
                console.error('Trigger:', e.trigger);
                showLayer();
            });
        </script>
    </body>
</html>
相關文章
相關標籤/搜索