js获取剪切板内容

  • 应用场景
  • 剪切板内容获取
  • 腾讯会议获取会议时间、会议链接和会议号
  • 更新=========================
  • 企业微信页面剪切板内容读取
    • iPhone无法进入页面
  • 零宽断言
  • 修改正则
  • 更新=========================
  • iPhone时间对比兼容问题

应用场景

在企业微信内部嵌入的网页需要获取剪切板的内容。

剪切板内容获取

读取剪切板navigator.clipboard
兼容性

navigator.clipboard.readText().then(clipText => {console.log("复制内容:",clipText);
})

腾讯会议获取会议时间、会议链接和会议号

  navigator.clipboard.readText().then(clipText => {console.log("复制内容:",clipText);//两个正则都可以只是第二个正则更方便我取值//const time = /([0-9]{4}[\/][0-9]{2}[\/][0-9]{2})[\x20]([0-9|:|-]+)/;const time = /([0-9]{4}[\/][0-9]{2}[\/][0-9]{2})[\x20]([0-9|:]+)([-])([0-9|:]+)/;const url = /(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/;const code = /(?<=\u4f1a\u8bae\u0020\u0049\u0044\uff1a)([0-9\x20]+)/;time.exec(clipText)&&console.log("time结果:",time.exec(clipText)[0])url.exec(clipText)&&console.log("url结果:",url.exec(clipText)[0])code.exec(clipText)&&console.log("code结果:",code.exec(clipText)[0])
});

更新=========================

因为特殊原因无法使用微信提供的调试工具,所以使用的google浏览器进行调试。上面的代码在Google浏览器是没有任何问题的,但是在移动端使用时navigator没有clipboard的方法。

企业微信页面剪切板内容读取

微信提供的API

wx.getClipboardData({success: function(res) {console.log(res.data)}
})

使用前记得通过config接口注入权限验证配,详细内容查看企业微信API文档
调用企业微信的获取剪切板内容的API后对数据进行解析,任然使用上文使用过的正则。

wx.getClipboardData({success: function(res) {console.log(res.data)const url = /(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/;const code = /(?<=\u4f1a\u8bae\u0020\u0049\u0044\uff1a)([0-9\x20]+)/;url.exec(res.data)&&console.log("url结果:",url.exec(res.data)[0])code.exec(res.data)&&console.log("code结果:",code.exec(res.data)[0])}
})

iPhone无法进入页面

以上代码在安卓上可以正常运行,并且截取内容正确,但是iPhone却出现空白,无法进入页面,(这是真的坑,因为连页面也进不去完全不知道哪里错了,排查问题排查了一下午,TAT)最后发现问题是IOS不支持零宽断言

零宽断言

接下来的四个用于查找在某些内容的之前或之后的东西,但是有不包含这些内容本身的时候,零宽断言就起到作用了。也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言1

上文中使用到的(?<=exp)就是零宽度正预测先行断言

所以iPhone直接挂了,(优秀)

修改正则

wx.getClipboardData({success: function(res) {console.log(res.data)const url = /(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/;const code = /([0-9]{3}[\x20][0-9]{3}[\x20][0-9]{3})|([0-9]{3}[-][0-9]{3}[-][0-9]{3})/;url.exec(res.data)&&console.log("url结果:",url.exec(res.data)[0])code.exec(res.data)&&console.log("code结果:",code.exec(res.data)[0])}
})

去掉零宽断言就可以了

更新=========================

iPhone时间对比兼容问题

iPhone真的问题多多,在对比会议时间是否过期的时候遇到的时间对比异常的问题。
时间的格式是YYYY-MM-DD HH:MM:SS,对比是否早于当前时间代码如下:

if(new Date('2021-12-22 10:55:00')>new Date){console.log("没有过期");
}esle{console.log("过期了");}

以上代码在安卓和Google浏览器运行判断是正常的,但是在iPhone无论是什么情况返回都是false。因为iPhone识别的格式为YYYY/MM/DD HH:MM:SS

let time = '2021-12-22 10:55:00';
if(navigator.userAgent.includes("iPhone")){time.replace(/-/g,"/");
}
if(new Date(time)>new Date){console.log("没有过期");
}esle{console.log("过期了");}

  1. 来自link. ↩︎

js获取剪切板内容(企业微信内嵌网页)相关推荐

  1. js 获取剪切板内容

    1. 粘贴事件 const items = (event.clipboardData || window.clipboardData).itemsconst len = items.lengthlet ...

  2. Android 10 获取剪切板内容

    一般可以放在Activity的onResume中调用如下方法: //获取剪切板内容 private void getClipboardData() {this.getWindow().getDecor ...

  3. python获取剪切板图片_python 获取剪切板内容的两种方法

    第一种 # -*- coding: utf-8 -*- # @Time : 2020/3/16 21:26 # @File : get_text_from_cupboard_13.py # @Auth ...

  4. 微信及企业微信内嵌浏览器内核信息及H5跑分数据-企业微信开发

    加我微信li570467731,拉你进二百多人企业微信开发同行群(文末有二维码). 企业微信开发三部曲: <企业微信应用开发概述篇(免费)>已完结: <企业微信开发第三方应用开发篇& ...

  5. Android微信浏览器标题,企业微信内H5网页分享微信好友ios正常安卓自定义标题、图标、未生效...

    企业微信内H5网页分享微信好友ios正常安卓自定义标题.图标.未生效 问题类型 API/组件名称 终端类型 微信版本 基础库版本 Bug 'onMenuShareWeibo', 'onMenuShar ...

  6. 微信小程序点击复制文本到剪切板,获取剪切板内容

    设置剪切板:wx.setClipboardData 获取剪切板:wx.getClipboardData api:https://developers.weixin.qq.com/miniprogram ...

  7. android 获取剪切内容,Android Q 获取剪切板内容

    背景 有时候我们需要在app启动时去获取用户复制的内容,这时候需要进行剪切板相关操作,而Android Q开始只有系统默认的输入法应用或者应用处于焦点时才能获取到剪切板的数据,经测试只有targetS ...

  8. 企业微信内嵌H5,引入 JS-SDK 调用 wx.previewFile 预览/下载文件(vue2.0适用)

    文章目录 业务场景 使用步骤 1. 引入企业微信 JS-SDK 2. 配置 wx.config 3. 调用 wx.previewFile 附:官方文档 业务场景 基于vue2.0开发企业微信内嵌H5, ...

  9. js获取剪切板文字图片方法

    有时候经常在网上看到网页可以读取系统粘贴板的内容,可以显示文字和图片等内容,就挺好奇的,所以就研究了一下. 基本原理 通过监听input的paste事件,获取到clipboardData内容,然后显示 ...

最新文章

  1. 矩阵的三角分解(LU)法(高斯消去法的矩阵形式分析)
  2. 死磕Java并发:J.U.C之并发工具类:Exchanger
  3. Redis附加功能之键过期功能
  4. Python中join()方法和os.path.join()方法
  5. 你不知道的 JavaScript 笔记——作用域和闭包
  6. Lua源码分析 - 基础篇 - Lua源码的结构和架构图(01)
  7. 东大OJ-1391-Big big Power
  8. 自己写的一个简单的php快速开发框架(JPrass)
  9. kepware omronFINS
  10. 图片怎样把背景去掉?怎么把图片背景透明?
  11. 九橡项目工时管理系统部署笔记
  12. ESP8266使用教程之初识
  13. 安装程序总是提示重启计算机,技巧|安装西门子软件反复提示重启电脑的解决方法...
  14. 关于游戏中美术文件夹的划分
  15. Win7远程桌面 提示 登录没有成功解决方法
  16. 《图解网络硬件》网络硬件通用基础知识
  17. java poi生成word 并插入 表格
  18. IESM项目实训三——语音合成工具类
  19. 王立平--scard0与scard1分别指的是什么?以及路径获取
  20. 计算机软件卸载不了怎么办,软件卸载不了,教您软件卸载不了怎么办

热门文章

  1. android 9.0 10.0 USB连接模式默认设为MTP
  2. 百度智能云“千帆大模型平台”最新升级:接入Llama 2等33个模型!
  3. java列出最简真分数序列_Java 列出最简真分数序列 循环
  4. 【算法数据结构体系篇class16】:图 拓扑排序
  5. Makefile错误:commands commence before first target.
  6. c++实验2-标准体重
  7. 【网易社招】2020全年度网易社招面试题合集,啃烂这些面试题去阿里至少也是个P7!
  8. kendoui固定宽度_Kendoui之grid保存为Excel
  9. Internet Explorer 11: “请不要再叫我 IE”
  10. Vue 高德地图 js API Loca 如何使用 连接线图层、脉冲连线图层