Safari 中的插入符号问题与 contenteditable SVG

Posted

技术标签:

【中文标题】Safari 中的插入符号问题与 contenteditable SVG【英文标题】:Caret issue in Safari with contenteditable SVG 【发布时间】:2021-09-24 09:18:03 【问题描述】:

我正在使用 contenteditable="true" 编辑 SVG 中的文本。在除 Safari 之外的所有浏览器中都可以使用。 Safari 的插入符号位置存在问题:

示例代码:

[contenteditable]
  -webkit-user-select:text;
  user-select:text;
<div contenteditable="true"  style="background: #ffe7e7">
  <svg style="display:inline-block">
    <text id="text" y="2em">Hello world</text>
  </svg>
</div>

【问题讨论】:

Webkit 对于 contenteditable 有大量 (353) 个未解决的错误 - 所以这并不奇怪。 【参考方案1】:

过去我也遇到过类似的问题。不幸的是,答案是承认 safari 有时会遇到特殊问题,我不得不在支持 safari 或重新考虑方法之间做出决定。因为我不想放弃 saffari,所以我完全重新考虑了这种布局的必要性,但是 YMMV。您可以找到与 contenteditable here 相关的 safari 问题的问题跟踪器。

【讨论】:

【参考方案2】:

如果您的 Safari 浏览器是最新的 (contenteditable is fully supported from 3.1.),您的问题很可能是 webkit 和 safari 在 contenteditable 方面非常存在错误。这里是Safari's bugs。

【讨论】:

如果低于 3.1,不支持 contenteditable。 版本,我的意思是【参考方案3】:

我们通过实施自己的插入符号解决了这个问题。系统插入符号被样式规则隐藏。

【讨论】:

如果你解释了你是如何做到的,这将是一个很好的答案。

以上是关于Safari 中的插入符号问题与 contenteditable SVG的主要内容,如果未能解决你的问题,请参考以下文章

Firefox 和 Safari 上的下拉箭头样式错误

如果正则表达式中的 `\A` 与 `^` (插入符号)之间有区别?

contenteditable,在文本末尾设置插入符号(跨浏览器)

python pymysql 文本插入符号错误

正则表达式中的插入符号

将插入符号移动到文本输入字段的末尾并使结尾可见