关于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)	
	  }
    }
}
相关推荐
2501_915106321 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
2501_915106322 小时前
使用 Sniffmaster TCP 抓包和 Wireshark 网络分析
网络协议·tcp/ip·ios·小程序·uni-app·wireshark·iphone
熊猫钓鱼>_>2 小时前
移动端开发技术选型报告:三足鼎立时代的开发者指南(2026年2月)
android·人工智能·ios·app·鸿蒙·cpu·移动端
徐同保1 天前
通过ip访问nginx的服务时,被第一个server重定向了,通过设置default_server解决这个问题
ios·iphone
2501_915918411 天前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
2501_916007471 天前
没有 Mac 用户如何上架 App Store,IPA生成、证书与描述文件管理、跨平台上传
android·macos·ios·小程序·uni-app·iphone·webview
夏幻灵2 天前
HTTPS全面解析:原理、加密机制与证书体
ios·iphone
TheNextByte12 天前
如何在iPhone上恢复已删除的笔记的综合指南
笔记·ios·iphone
rose and war2 天前
python和jinja版本问题导致的访问报500
python·ios
fendoudexiaoniao_ios2 天前
iOS 列表拖拽cell排序
ios·swift