html - contenteditable 不显示伪选择器 :before in safari

标签 html css safari pseudo-element

我想添加一个带有占位符的输入行为到 contenteditable 字段。

没问题,使用以下 CSS 即可完成

<div contentEditable="true" data-placeholder="Title"></div>
[contentEditable=true]:empty:not(:focus):before{
  content:attr(data-placeholder);
  color:grey;
}

这是针对每个具有属性 contenteditable 的元素那是 true也没有 child ,也没有重点插入与 data-placholder 中的文本相同的文本.

JsFiddle可用。在 FF、Chrome 和 IE 11 上运行良好,但在 Safari(从 5 到 7)中我看到以下错误。当我点击时:

  • 点击可编辑
  • 写点东西
  • 点击离开(它工作正常)
  • 然后回到contenteditable
  • 删除所有文本
  • 点击离开

比我的 contenteditable 是空的。 (在所有其他浏览器中,它里面有 Title)。请注意,如果您只是点击可编辑和点击点击,它的行为是正确的。

不知道为什么会这样,也不知道如何解决。

最佳答案

这是一个已知问题,元素未注册为空。您可以通过简单的 jquery 函数调用来清空元素来修复它:

$input.empty();

参见 this answer以获得详细的解释。

这是你的工作 jsfiddle .

关于html - contenteditable 不显示伪选择器 :before in safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24250455/

相关文章:

javascript - 更改png图像背景颜色

html - Img 的最大高度不尊重 parent 的尺寸

CSS:换行符不适用于太长的行

c# - Safari 将空白表单发送到我的服务器

google-chrome - Canvas 上的 CORS 不适用于 Chrome 和 Safari

jquery - 显示 div 时激活 jQuery 导航栏上的选项卡

html - css h1的两种颜色

html - 关于我的不透明度 slider 的建议(纯 CSS,无 JS)

iphone - 如何将用户移动到 Safari 中的 URL

css - jsp :include making the divs mis-aligned in ie7