Canvas 文本在浏览器中支持本机 ctrl+f

Canvas with text supporting native ctrl+f in browser

如果您在 Canvas 中编写文本,是否有可能以某种方式使 "find" (ctrl+f) 工作?

我在 https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Drawing_text 上查看了基本示例,在 chrome 中搜索 "hello world" 时,canvas 文本未突出显示。

有办法吗?

如果没有,有没有人见过仅使用 DOM 实现 "box-and-lines" 图表(如 UML)? (此后将支持本机查找文本)

Html5 Canvas 在它的 canvas 上绘制文本——你看到的文本是一组无法访问的以字母形状排列的像素,所以 Ctrl-f 找不到文本。如果您想要可搜索的文本,您可以使用 CSS 将 html div 放在 canvas 上并将其内容设置为您想要的文本。然后 Ctrl-f 会找到它。您可以在 div 上设置 pointer-events: none,这样它就不会捕获您打算为 canvas 设置的事件。

一个疯狂(不推荐)的解决方法是将包含所有文本的元素放在屏幕外。当 Ctrl-f 在该元素中找到某些内容时,您可以获取所选文本并计算在 canvas 上绘制相同所选文本的位置。然后,您可以将 canvas 上的选定文本重新绘制为蓝底白字文本,以表明它是 "found"。完全不推荐这种疯狂的解决方法,但它可能会起作用