JS怎么判断鼠标选中的内容是否包含任意标签?

前言

公司的某个需求是:

  • 鼠标可以在页面中选择任意的内容
  • 前端去校验选择的内容是否是纯文本
  • 如果是,发请求;不是,提示选择的内容不规范

最终 window.getSelection() 去实现的

代码

js 复制代码
// 1.创建一个新的文档片段来保存选区内容
const richText = window.getSelection().getRangeAt(0).cloneContents();

// 2. 创建一个 div,将选择的内容作为他的子元素
// 3. 这样通过 innerHTML 就能获取字符串
const richTextContent = document.createElement('div');
richTextContent.appendChild(richText);
// 如果选择的内容包含了标签,则 text 的可能是值是 "xx  <span>aa</span> ccc" 这样的
const text = richTextContent.innerHTML;

// 这个正则表达的是选择的内容只能是 汉字、英文、数字、常见的标点符号和空格
const eReplaceSelectedWordReg = /^[\u4e00-\u9fa5a-zA-Z0-9。?!,;:""''()【】《》<>...~.?!,;\s:''\"()]*$/

if (!eReplaceSelectedWordReg.test(text)) {
    message.warning(
      '所选内容不规范,请选择数字、中文、英文及常规标点符号内容',
    );
    return;
}
相关推荐
四瓣纸鹤1 分钟前
F2图表在Vue3中的使用方法
前端·javascript·vue.js·antv/f2
それども7 分钟前
浏览器CSR和SSR渲染区别
javascript·lua
web前端1238 分钟前
# @shopify/react-native-skia 完整指南
前端·css
shanLion8 分钟前
从 iframe 到 Shadow DOM:一次关于「隔离」的前端边界思考
前端·javascript
精神状态良好11 分钟前
RAG 是什么?如何让大模型基于文档作答
前端
CRAB11 分钟前
解锁移动端H5调试:Eruda & VConsole 实战指南
前端·debug·webview
OpenTiny社区11 分钟前
Vue2/Vue3 迁移头秃?Renderless 架构让组件 “无缝穿梭”
前端·javascript·vue.js
敲代码的独角兽12 分钟前
深入理解 JavaScript 异步机制:从回调到 Promise 再到 async/await
前端
鱼鱼块12 分钟前
二叉搜索树:让数据在有序中生长的智慧之树
javascript·数据结构·面试
敲代码的独角兽13 分钟前
当 Web Worker 遇上异步,如何突破单线程限制?
javascript