我能在没有 Javascript 的情况下锻炼的最好的东西是
HTML:
<div contenteditable="true">
<div>asdfasdf</div>
</div>
较少的:
div[contenteditable=true] {
outline: none;
&>p,
&>div {
margin: 0 0 0 30px;
display: list-item;
}
}
斌http://jsbin.com/idekix/6/edit
但是这里有一些缺点,
第一个也是非常大的,Win8 上的 FireFox 18.0.1 代替插入div
orp
标记作为新行使用类似 double 的东西br
,
第二次发生在您删除所有内容并开始输入并按 Enter 时,不同的浏览器行为非常不同,Chrome 将第一行作为contenteditable
容器的纯文本节点插入,并且比将每个新行放入div
Opera 12.12 处理得更好,而且它永远不会允许删除最后一个div
节点,IE9-10 开始跳转,并且在您再次开始后使用p
标签而不是div
(这甚至不是这样的灾难,只是不一致),但是 FireFox 甚至还没有尝试改变它的br
行为。还尝试使用 IE10 调试模式检查 IE7-8,它与 Opera 相同,尽管它不是真正的浏览器。
第三,它允许你插入空节点,说到这个 Opera 做得很好,在 Opera http://jsbin.com/uxesez/1/edit中看到这个 bin ,这里的标记更接近原始,它不允许你插入空li
。
也就是说,所有测试都是在 Windows 8 64 位平台上完成的,使用 Chrome 24.0.1312.56 m、FireFox 18.0.1、Opera 12.12 和 IE10,通过 IE 调试栏模拟旧版 IE。承认在其他平台/版本上情况可能会有所不同。
总结以上所有内容,contenteditable
具有很好的浏览器支持范围http://caniuse.com/contenteditable,但是每个浏览器都有自己的实现,这是另一个单独的问题。因此,如果没有跨浏览器 JavaScrpt 的麻烦,您将无法使用它。也作为我个人意见的contenteditable
核心思想更适合像轻量级替换iframe
当它用作浏览器中几乎每个富文本编辑器的元素时。
来自 Mozilla 源的 UPD https://developer.mozilla.org/en-US/docs/HTML/Content_Editable
在 HTML5 中,任何元素都可以编辑。这个特性是很久以前引入的,但现在已经被 WHATWG(html 当前规范)标准化。使用一些 JavaScript 事件处理程序,您可以将您的网页转换为一个完整且快速的富文本编辑器。
下一步只是我的谦虚建议。我认为,在您的情况下,可以使用真正的可编辑字段来代替。我在这个 bin http://jsbin.com/ojiyok/7/edit中所做的非常多的原型版本还有一些需要改进的地方,但看起来它的行为比真实的更可预测conteneditables
,这里的好部分是你可以根据你的更改 UI同时需要所有浏览器。