关于ios点击分享自动复制到粘贴板的问题

前言

Android 系统没有什么特别的要求,实现这个也比较容易。但ios在某些情况下就会出现问题。

  1. 如果ios是点击之后,请求接口,再把接口的内容赋值给粘贴板肯定行不通,会被ios系统拦截,导致赋值失败或者赋值为空。
  2. 建议使用第三方库clipboard.js来实现粘贴板赋值
  3. 将点击的dom设置为一个button最好实现。
js 复制代码
<!-- 辅助copy的button Android不需要被用户查看 -->
<button id="copy-share" ref="copyBtn" v-show="showBtn">
	Copy to clipboard
</button>

import ClipboardJS from 'clipboard';

const copyBtn = ref('')
const showBtn = ref(false)
const handleShareLink = async () => {
	// 这是一个异步函数
	const res = await shareLinkGenerate({
      ...
    })
    if(res) {
	    copyBtn.value.setAttribute('data-clipboard-text', res); // 并且将这个res的结果,赋值给这个按钮
	    var clipboard = new ClipboardJS('#copy-share'); // 如果请求成功了 让clipboard 和按钮绑定
	    clipboard.on('success', function(e) {  // 成功的回调
	        showSuccessToast('分享链接已复制');
	        e.clearSelection();
	    });
	    clipboard.on('error', function(e) { // 和失败的回调
	      showToast('复制失败');
	      e.clearSelection();
	    });
    	//判断是不是ios系统或者苹果系列
    	if (navigator?.userAgent?.match(/(iPhone|iPod|iPad);?/i)) {
	       	// 控制让一个按钮出现,或者弹一个按钮出来,让用户再点击这个按钮一次
	       	showBtn.value = true
	        return
      } else {
		// 如果不是苹果,就可以直接赋值给剪贴板了copyBtn 就是对应的按钮
        const handleCopy = () => {
          if(copyBtn.value) {
            copyBtn.value.click()
          }
        }
        setTimeout(() => {
          handleCopy()
        },1000)	
	  }
    }
}
相关推荐
白玉cfc1 小时前
【iOS】底层原理:分类、扩展和关联对象
ios·分类·数据挖掘
2601_955767422 小时前
观复盾护景贴:东方哲思与双护科技的深度实测
人工智能·科技·ios·iphone·圆偏振光·磁控溅射
会Tk矩阵群控的小木3 小时前
企业级iMessage群发系统实战:单主机管控多iPhone设备完整实现
运维·ios·开源软件·个人开发
人月神话-Lee4 小时前
【图像处理】vImage/Accelerate——SIMD 让 CPU 也能飞
图像处理·深度学习·ios·cnn·ai编程·swift
万能小林子4 小时前
如何将网页在线转APP?5种打包工具对比速成指南(含在线/手机/电脑方案)
android·ios·uni-app·web app·wap2app·app打包·app封装
2601_955767425 小时前
iPhone 17屏幕反光怎么解?磁控溅射AR膜实测反射率低至0.5%
ios·ar·iphone·#观复盾护景贴·scinique双护技术
盼小辉丶5 小时前
PyTorch深度学习实战(56)——在iOS上构建PyTorch应用
pytorch·深度学习·ios
for_ever_love__14 小时前
UI学习:UISearchController基础了解和应用
学习·ui·ios·objective-c
代码的小搬运工19 小时前
ZARA仿写
ios
人月神话Lee21 小时前
【图像处理】vImage/Accelerate——SIMD 让 CPU 也能飞
ios·swift·图像识别