返回

划词高亮,语雀福音!

前端



纯 JavaScript 实现语雀的划词高亮功能,让划词高亮不改变文本内容原本的 DOM 结构,并使用 Canvas 进行渲染,与文本展示内容的结构完全解耦,优化性能。

语雀的划词高亮功能十分强大,它可以让你快速地对文章中的文字进行高亮,并将其分享给其他人。但是,语雀的划词高亮功能也存在一些问题,比如它会改变文本内容原本的 DOM 结构,这可能会导致一些问题。

为了解决这些问题,我使用纯 JavaScript 实现了一个语雀的划词高亮功能。这个功能不会改变文本内容原本的 DOM 结构,它使用 Canvas 进行渲染,与文本展示内容的结构完全解耦,这样就不会影响到文本内容原本的结构了。

实现原理

这个功能的实现原理很简单,它首先会创建一个 Canvas 元素,然后将文本内容渲染到 Canvas 元素上。之后,它会使用 JavaScript 的 requestAnimationFrame() 方法来不断地刷新 Canvas 元素,这样就可以实现划词高亮的效果了。

优化

为了优化性能,我使用了一些技巧。比如,我使用了一个叫做 requestAnimationFrame() 的方法来刷新 Canvas 元素,这个方法可以确保只有在浏览器空闲的时候才会刷新 Canvas 元素,这样可以减少对浏览器的影响。另外,我还使用了一个叫做 OffscreenCanvas 的对象来创建 Canvas 元素,这个对象可以将 Canvas 元素渲染到内存中,这样可以减少对浏览器的影响。

效果

这个功能的效果非常好,它可以快速地对文章中的文字进行高亮,并将其分享给其他人。而且,它不会改变文本内容原本的 DOM 结构,也不会影响到文本内容原本的结构,所以它可以很好地解决语雀划词高亮功能存在的一些问题。

总结

这个功能是一个非常实用的工具,它可以让你快速地对文章中的文字进行高亮,并将其分享给其他人。而且,它不会改变文本内容原本的 DOM 结构,也不会影响到文本内容原本的结构,所以它可以很好地解决语雀划词高亮功能存在的一些问题。


引用