解決clipboard手機端沒法複製的一種思路

最近,作了一個切圖的小項目html

主要內容是微信號的推廣頁面,上面會有精美的圖片和微信號:)node

點擊按鈕,會複製到粘貼板上,本身去微信裏面粘貼搜索:),懶人會進行一系列複雜操做麼,不看好git

首先,百度了一下,看中clipboard庫,純js兼容手機端,好激動:)github

clibboard的GitHub地址,使用很是簡單,本身看demo目錄的內容,源碼看的方,仍是不知道如何實現的,求教web

主要思路,就點擊按鈕,自動將文本複製到剪貼板。ajax

選擇使用其中的function,可使用ajax從服務端獲取微信號json

官網的方案微信

1 new Clipboard('.btn', {
2     text: function(trigger) {
3         return trigger.getAttribute('aria-label');
4     }
5 });

Now, you need to instantiate it by passing a DOM selectorHTML element, or list of HTML elements.ide

能夠選擇三種方式,來肯定點擊哪兒觸發點擊。測試

根據業務須要,使用zepto來獲取json

 1 // 添加獲取json
 2 Zepto(function ($) {
 3     $.getJSON('account/data.json', '?time='+new Date().getTime(), function (data) {
 4         let name = data.name;
 5 
 6         document.getElementById("num").innerHTML = name;
 7 
 8         var clipboard = new Clipboard('.btn', {
 9             text: () => name
10         });
11 
12         clipboard.on('success', (e) => {console.log(e)
13             alert('微信號已複製,請打開微信,點擊右上角+號,選擇添加朋友,粘貼搜索')});
14 
15         clipboard.on('error', (e) => console.log(e));
16     });

效果以下:

發現點擊,有彈窗,仔細觀察會發現,在body底部出現了一串代碼,hack方式,隱藏文本

下面是簡單的html,有興趣的同窗能夠本身試試

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4   <meta charset="UTF-8">
 5   <title>測試</title>
 6   <script src="dist/clipboard.min.js"></script>
 7   <script src="dist/zepto.min.js"></script>
 8   <script src="static/js/changeAccount.js"></script>
 9   <style>
10     .bg{
11       width:100%;
12       height: 1500px;
13       background-color: #ccc;
14       text-justify: inter-cluster;
15       font-size: 100px;
16     }
17   </style>
18 </head>
19 <body>
20 <div class="btn">
21   <div class="bg">
22     背景
23   </div>
24   <p id="num"></p>
25 </div>
26 </body>
27 </html>
View Code

在手機點擊無任何效果,這個大坑踩了很久才知道,

具體怎麼踩得很差意思說了,取巧終究仍是要吃虧,,,

仔細地又看了一遍demo,發現多數都是<button class="btn">

索性照着官方來,

<button class="bg">
背景
</button>

哎,心累,早這樣不就行了,至於爲何剛開始不使用button,都是設計稿的鍋,居然沒有按鈕,還要

能點擊複製,

頁面有不少背景圖片和內容,初步想法是,將按鈕設置全屏,z-index=-1;

發現,紅,綠區域點擊無效,灰色區域能夠複製,此時確信了,手機端點擊是沒法穿透的,只能獲取最上面一層

改變一下思路,將按鈕放在最上一層,不就能夠了嗎,你想到什麼了

1 z-index:999;
2 opacity:0;
View Code

最後,想看完整項目的,請移步我的GitHub

相關文章
相關標籤/搜索