关于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)	
	  }
    }
}
相关推荐
空中海3 小时前
iOS 静态逆向、IPA 结构与 Mach-O 分析
ios·华为·harmonyos
Mr -老鬼3 小时前
EasyClick 双端自动化智能体|Android&iOS 全平台 EC 脚本开发助手
android·ios·自动化·易点云测·#easyclick·#ios自动化
空中海4 小时前
01. iOS 逆向基础、环境搭建与授权
macos·ios·cocoa
空中海4 小时前
iOS LLDB 调试、Mach-O、Runtime 与二进制分析
macos·ios·cocoa
空中海4 小时前
iOS 防护、加固复测与综合交付
macos·ios·cocoa
懋学的前端攻城狮1 天前
iOS 列表性能优化实战:从 45fps 到 60fps 的蜕变
ios·性能优化·ui kit
斯班奇的好朋友阿法法1 天前
鸿蒙 vs iOS vs 微信小程序:开发平台全面对比
ios·微信小程序·harmonyos
@大迁世界2 天前
14个你现在必须关闭的 iOS 26 设置,不然手机很快被它榨干
macos·ios·智能手机·objective-c·cocoa
YJlio2 天前
10.2.8 以其他账户运行服务(Running services in alternate accounts):为什么“把服务切到某个用户账号下运行”,本质上是在改变服务的整个安全上下文?
python·安全·ios·机器人·django·iphone·7-zip
pop_xiaoli2 天前
【iOS】KVC与KVO
笔记·macos·ios·objective-c·cocoa