JavaScript粘贴事件如何检测粘贴内容是否来自Word文档
JavaScript 检测粘贴内容是否来自Word的实现方案
JavaScript 没有提供原生的event.source属性直接判断粘贴内容的来源,但我们可以通过识别剪贴板内容中的Word专属特征,实现你需要的逻辑:
实现原理
从Word文档中复制内容时,系统剪贴板存储的HTML格式数据会自动携带Office专属的命名空间、文档类型标识、mso-开头的自定义样式前缀等独有特征,匹配这些特征即可判断粘贴内容是否来自Word。
可直接使用的代码示例
example.addEventListener('paste', function (event) { // 获取剪贴板数据对象 const clipboardData = event.clipboardData || window.clipboardData; // 读取剪贴板中的HTML格式内容 const pasteHtml = clipboardData.getData('text/html'); // 匹配Word专属特征 const isFromWord = /(Word\.Document|urn:schemas-microsoft-com:office|class="?Mso|mso-[a-z]+)/i.test(pasteHtml); if (isFromWord) { // 此处编写粘贴内容来自Word时要执行的逻辑 console.log('检测到内容来自Word文档'); } });
注意事项
- 上述正则已经覆盖了绝大多数桌面端Windows、Mac版Word的粘贴场景,也支持大部分网页版Word的识别
- 如果需要降低误判率,可以只保留最精准的匹配规则,比如仅匹配
meta name=ProgId content=Word\.Document这个Word专属的文档类型标识 - 两类场景会出现识别失效:一是用户仅复制了Word中的纯文本内容,剪贴板未携带HTML格式数据;二是部分第三方工具生成的HTML刻意模拟了Word的标识,会出现误判,可根据业务场景调整正则的严格度适配
内容的提问来源于stack exchange,提问作者Michelle
相关产品推荐
相关产品推荐

