[Vue3 + TS + Vite] 获取网页选中内容的字符串格式或HTML格式

获取网页选中内容的字符串格式

typescript 复制代码
let selected_text_by_mouse: any

// 获取选中的文字
const mouse_selected_text=(event:MouseEvent)=>{
  const selection = window.getSelection();
  if(selection && selection.rangeCount > 0){
    const content = selection.toString();
    selected_text_by_mouse = content
  }
  else{
    selected_text_by_mouse=""
  }
}

获取网页选中内容的HTML格式
(无法获取选中文字最外面的HTML标签)
例如:

html 复制代码
<p>一<span>段文</span>字</p>

选中"一段文字"之后,得到的是:

html 复制代码
一<span>段文</span>字

而不是:

html 复制代码
<p>一<span>段文</span>字</p>
typescript 复制代码
let selected_text_by_mouse: any

// 获取选中的文字
const mouse_selected_text=(event:MouseEvent)=>{
  const selection = window.getSelection();
  if(selection && selection.rangeCount > 0){
    const range = selection.getRangeAt(0)
    const clonedFragment = range.cloneContents()
    // 创建一个临时容器以容纳克隆的片段
    const innerTmpContainer = document.createElement('div')
    innerTmpContainer.appendChild(clonedFragment)
    
    const contentHtmlString = innerTmpContainer.innerHTML
    // 清除临时容器(可选)
    innerTmpContainer.remove()

    const content = contentHtmlString
    selected_text_by_mouse = content
  }
  else{
    selected_text_by_mouse=""
  }
}
相关推荐
狂炫冰美式12 小时前
3天,1人,从0到付费产品:AI时代个人开发者的生存指南
前端·人工智能·后端
一千柯橘12 小时前
从摄影新手到三维光影师:Three.js 核心要素的故事
前端·three.js
南囝coding13 小时前
2025年CSS新特性大盘点
前端·css
c***V32313 小时前
前端框架对比:10个主流框架优缺点分析
前端·前端框架
栀秋66613 小时前
当我把 proto 打印出来那一刻,我懂了JS的原型链
前端·javascript
Cassie燁13 小时前
element-plus源码解读1——useNamespace
前端·vue.js
一直在学习的小白~13 小时前
npm发布脚手架流程
前端·npm·node.js
ErMao13 小时前
TypeScript的泛型工具集合
前端·javascript
涔溪13 小时前
如何解决微前端架构中主应用和微应用的通信问题?
前端·架构
重铸码农荣光14 小时前
深入理解 JavaScript 原型链:从 Promise.all 到动态原型的实战探索
前端·javascript·promise