码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • uniapp 复制功能,ios复制不了,h5复制不了,部分浏览器无法复制


    目录

    一、针对h5和APP端(ios和android端,都由uniapp打包生成)的复制:

    二、针对h5的iframe,ios和android端通过webview嵌套我们网页时(ios和android端采用原生开发)。

    三、部分浏览器无法复制。


    一、针对h5和APP端(ios和android端,都由uniapp打包生成)的复制:

    针对h5和APP端的复制,只需要区别APP端需要调用uni.setClipboardData方法,h5那边必须使用document.execCommand('Copy')执行复制就行了。

    1. function copy(res,isToast=true){
    2. // #ifdef H5
    3. let oInput = document.createElement('input')
    4. oInput.value = res
    5. document.body.appendChild(oInput)
    6. oInput.select() // 选择对象
    7. document.execCommand('Copy') // 执行浏览器复制命令
    8. if(isToast){
    9. uni.showToast({
    10. title: "复制成功!",
    11. duration: 2000,
    12. icon: "none",
    13. });
    14. }
    15. oInput.remove()
    16. // #endif
    17. // #ifndef H5
    18. uni.setClipboardData({
    19. data: res,
    20. success: function () {
    21. if(isToast){
    22. uni.showToast({
    23. title: "复制成功!",
    24. duration: 2000,
    25. icon: "none",
    26. });
    27. }
    28. },
    29. });
    30. // #endif
    31. }

    二、针对h5的iframe,ios和android端通过webview嵌套我们网页时(ios和android端采用原生开发)。

    当我们的网页需要在其他h5项目中用iframe嵌套,APP端那边使用webview嵌套时,h5和android那边的复制是可以的,但是ios的复制就不行了,网上找了很多方法都不行,最后只能让那边ios开发人员手动提供一个方法进行调用。

    window.webkit.messageHandlers.ioscopy.postMessage(res)

    这段代码是js调用ios方法,其中ioscopy是ios那边手动实现的一个复制方法,并不是本来就有的。

    1. function copy(res,isToast=true,title="复制成功。"){
    2. if(uni.getSystemInfoSync().platform=='ios'){ //ios兼容处理
    3. window.webkit.messageHandlers.ioscopy.postMessage(res);
    4. if(isToast){
    5. uni.showToast({
    6. title: title,
    7. duration: 2000,
    8. icon: "none",
    9. });
    10. }
    11. return;
    12. }
    13. // #ifdef H5
    14. let oInput = document.createElement('input')
    15. oInput.value = res
    16. document.body.appendChild(oInput)
    17. oInput.select() // 选择对象
    18. document.execCommand('Copy') // 执行浏览器复制命令
    19. if(isToast){
    20. uni.showToast({
    21. title: title,
    22. duration: 2000,
    23. icon: "none",
    24. });
    25. }
    26. oInput.remove()
    27. // #endif
    28. // #ifndef H5
    29. uni.setClipboardData({
    30. data: res,
    31. success: function () {
    32. if(isToast){
    33. uni.showToast({
    34. title: title,
    35. duration: 2000,
    36. icon: "none",
    37. });
    38. }
    39. },
    40. });
    41. // #endif
    42. }

    三、部分浏览器无法复制。

    有些浏览器的复制功能并不生效,比如红米官方自带的浏览器,其实并不是复制方法存在浏览器兼容问题,而是用户在第一次进入网页的时候将复制功能给禁用了,后面无论你换成什么复制方法,浏览器都无法复制。

    可以在 浏览器->设置->隐私防护->隐私保护->读取或写入剪切板 进行查看。

  • 相关阅读:
    BpmnEventBus - 带权重的事件总线设计(二)
    使用 Node.js 和 Azure Function App 自动更新 Elasticsearch 索引
    C/C++中常用必会的专业单词(持续更新 目前53个)
    线程池的简介说明
    #今日说码栏目# 深拷贝与浅拷贝
    可用于智能客服的完全开源免费商用的知识库项目
    猿创征文|[C++ 从入门到精通] 5.一学就会的迭代器介绍与相关操作展示
    新建第一个HBuilder项目
    『大模型笔记』RAG 系统开发中的12大痛点及解决方案
    【java】ArrayList和LInkedList的区别
  • 原文地址:https://blog.csdn.net/qq_42740797/article/details/126547295
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号