解决clipboard手机端无法复制的一种思路

最近,做了一个切图的小项目

主要内容是微信号的推广页面,上面会有精美的图片和微信号:)

点击按钮,会复制到粘贴板上,自己去微信里面粘贴搜索:),懒人会进行一系列复杂操作么,不看好

首先,百度了一下,看中clipboard库,纯js兼容手机端,好激动:)

clibboard的GitHub地址,使用非常简单,自己看demo目录的内容,源码看的方,还是不知道如何实现的,求教

主要思路,就点击按钮,自动将文本复制到剪贴板。

选择使用其中的function,可以使用ajax从服务端获取微信号

官网的方案

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.

可以选择三种方式,来确定点击哪儿触发点击。

根据业务需要,使用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>

在手机点击无任何效果,这个大坑踩了好久才知道,

具体怎么踩得不好意思说了,取巧终究还是要吃亏,,,

仔细地又看了一遍demo,发现多数都是<button class="btn">

索性照着官方来,

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

哎,心累,早这样不就好了,至于为什么刚开始不使用button,都是设计稿的锅,竟然没有按钮,还要

能点击复制,

页面有很多背景图片和内容,初步想法是,将按钮设置全屏,z-index=-1;

发现,红,绿区域点击无效,灰色区域可以复制,此时确信了,手机端点击是无法穿透的,只能获取最上面一层

改变一下思路,将按钮放在最上一层,不就可以了吗,你想到什么了

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

最后,想看完整项目的,请移步个人GitHub


				
时间: 2024-10-01 06:37:49

解决clipboard手机端无法复制的一种思路的相关文章

解决HTML5手机端字体小的问题

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> </head> <body> 这样,在手机上显示的字体大小才正常

《JS实现复制内容到剪贴板功能,可兼容所有PC浏览器,不兼容手机端》

前记:本来原生的JS是有提供一个函数来实现这个功能(window.clipboardData),但是很遗憾,这个函数仅仅支持IE和FF浏览器,所以基本用处不大.下边介绍的是一个第三方插件库(ZeroClipboard.js). ZeroClipboard.js在Git上的地址为:https://github.com/zeroclipboard/zeroclipboard 注意:此js库不支持兼容手机端(包括Android.IOS),仅支持PC端浏览器. 第一步:将插件库引入到工程中. 把Git上

设置背景图片的两种方式,并解决手机端背景图片高度自适应问题

1 设置背景图片的两种方式: 方式一: <img src="../img/10.jpg"/ class="back" id="Background"> .back{ position: fixed; width: 100%; height: 100%; display: block; z-index: -100; } 方式二:div class="body" id="Background">

手机端复制,pc端复制

手机端属于高级浏览器  原生js复制也是支持手机端复制的. 一.点击复制文本框内容的代码(1) <script type="text/javascript">     function jsCopy(){         var e=document.getElementById("content");//对象是content         e.select(); //选择对象         document.execCommand("Co

[共通]手机端网页开发问题及解决方法整理

Q1:手机端开发网页,界面适应问题.A1: <meta name="viewport" content="width=device-width,initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> width - viewport的宽度 height - viewport的高度    initial-scale - 初始的缩放比例    minimum-scale - 允许用户缩放到的最小比

megapix-image插件 使用Canvas压缩图片上传 解决手机端图片上传功能的问题

最近在弄微信端的公众号.订阅号的相关功能,发现原本网页上用的uploadify图片上传功能到手机端有的手机类型上就不能用了,比如iphone,至于为啥我想应该不用多说了吧(uploadify使用flash实现上传的): 经过研究找到了一个手机端比较相对比较好用的插件实现图片上传,那就是megapix-image插件,比uploadify还是好用多了,下面就来上实例吧: html页面: <html> <body> <input type="file" cap

帝国cms 图片相对路径绝对路径设置问题+帝国cms 手机端调用图片问题

首先说第一个问题:帝国cms 图片相对路径绝对路径设置问题 这个是直接在后台可以设置的: 系统--系统设置--系统参数设置--基本属性--修改附件地址-- /d/file/(相对路径) http://www.qyhongyan.com/d/file/(绝对路径) 解决上面问题的前提是在制作之初就选定,不然后期改回很纠结的 从上面问题我们又会衍生出新的问题: 1.使用绝对路径:pc调用正常,手机调用也正常,但是有一个问题就是不可"移植" 如果域名更换,所有的图片链接全部失效,需要重新上传

用phpcms切换中英文网页的方法(不用解析二级域名)、phpcms完成pc和手机端切换(同一域名)

AA.phpcms进行双语切换方法(不用解析二级域名) phpcms进行两种语言的切换,有一把部分的人都是进行的二级域名的解析,这样的话可能会有一部分的麻烦,我这里有一种方法可以不用解析二级域名就可以,不过因为是模板所以可能麻烦一点,不过真的是不接触不知道,接触到没有用到的东西就可以进行进一步的学习.作者:悦悦 博客地址:http://www.cnblogs.com/nuanai/ 这里我使用的方法是进行一级栏目的读取,通过不同的一级栏目进行不同的内容调取.只要修改一级栏目的id就可以了,这就需

关于Unity2018最新杏彩合买源码新增腾讯分分彩完整版带手机端新版ECS框架

关于Unity2018最新杏彩合买源码新增腾讯分分彩完整版带手机端新版ECS框架杏彩源码下载Q212303635 论坛:aqiulian.com先说说和它一同推出的,和ECS没直接关系的新特性:NativeArray<T>按照官方的说法,以后还会有NativeList,NativeHashMap,NativeQueue之类(这些在C#端就能实现). NativeArray内部只能容纳值对象.而且在创建的时候除了指定length外,还需要指定allocator模式: Temp(临时)TempJo