pasterHTML报错后 获取range start end位置不正确

阅读次数 12

image.png 使用pasteHTML方法 将html 上传到wps实例中 会出现如下图报错 image.png 此时如果选中某一部分内容
image.png
使用 如下代码 获取的start 和 end是同一个值 就是不能获取到被选中的内容
const selection = await this.instance.Application.ActiveDocument.ActiveWindow.Selection
// Range 对象
const range = await selection.Range
const start = await range.Start
const end = await range.End
console.log('demo--------', start, end, range, 'rangge')

7 Answers

您好,未能复现您的问题,您那边的PasteHtml方法具体是如何使用的呢。

连续多次调用 const DocumentRange = await _this.instance.Application.ActiveDocument.GetDocumentRange() const End = await DocumentRange.End const Range = await _this.instance.Application.ActiveDocument.Range.SetRange(End - 9, End - 9)
// 选区对象
await Range.PasteHtml({ HTML: html })
就会出现获取位置报错
出现报错后 获取selection.range的 start 和 end就不正确了

您好,使用您提供的上述代码暂未复现您的问题,您那边可以尝试一下换成获取正文https://solution.wps.cn/docs/client/api/Word/Document.html#content 的方法再试试看,若还是存在该问题,麻烦提供一下会出现上述报错复现文件链接我们再试试看。 const app = instance.Application // 返回一个 Range 对象 const ContentRange = await app.ActiveDocument.Content
const End = await ContentRange.End
const Range = await instance.Application.ActiveDocument.Range.SetRange(End, End)
// 选区对象
await Range.PasteHtml({ HTML: html})

我们项目就是多次通过pasteHTML 向wps添加 自己写好的html内容 例如大段... 或者大段 。。。内容等 就大概率出现上图红色报错 产生的方式就是多次使用该方法

当出现报错后 通过 const selection = await this.instance.Application.ActiveDocument.ActiveWindow.Selection let questionText = '' // 问题
// Range 对象
const range = await selection.Range
const start = await range.Start
const end = await range.End
获取到的选择位置是不正确的

这里是两个问题 1是大量使用pasteHTML 大概率会出现报错 2 出现报错的情况下 选中某一部分内容 获取到的位置不对

您好,可以参考这个回复https://solution-community.wps.cn/questions/10010000000003584

这已经是添加了延迟后的了

您那边自己写的html方便提供一下吗,我们再试试能否复现

image.png image.png 出现报错后 无论选择哪里 获取的位置都是一样的

这个问题 能加个联系方式啥的 远程帮看一下吗

技术人员给个回复啊 问题还没解决 一直存在呢