Contenteditable和designmode
contenteditable和designmode竟然还是不一样的.
- designMode只能把document整体改成可编辑状态,
- contentEditable可以把任何HTML元素改成可编辑状态
- 确定元素是否可编辑的唯一完全可靠的方法是检查 isContentEditable 属性
- document.getElementById(“edit_area”).contentEditable = true
原文: http://qupyqupy.pixnet.net/blog/post/207305728-%E7%94%A8-contenteditable-%E8%88%87-designmode-%E5%89%B5%E9%80%A0%E8%87%AA%E5%B7%B1%E7%9A%84-html-%E7%B7%A8
核心样例代码:
html
<div contenteditable="true"></div>
js
document.execCommand("fontsize", false, 60);//这个document就是被选择的edatable元素.
document.getElementById("edit_area").contentEditable = true ; // true || false
原文: https://juejin.im/entry/5b1f2989e51d4506d936fbd2
真正的原文: https://denzel.netlify.com/js/editable_dom.html?_=54325454321234
isContentEditable
- 一个只读的属性,返回true或false,表示页面元素是否可编辑。
- document.documentElement.isContentEditable //true
- document.body.isContentEditable //true
- document.querySelector(‘#id’).isContentEditable //true
designMode
- 是document的一个全局开关,可读可写,有两个值:“on”、“off”,表示整个页面是否可编辑。可以在console里输入:
- document.designMode = ‘on’
user-modify
- 是CSS版的contenteditable。
- user-modify: read-only; //只读
- user-modify: read-write; //读写,支持富文本
- user-modify: write-only; //
- user-modify: read-write-plaintext-only; //读写,但只可输入文本
contenteditable
- contenteditable=”” //与contenteditable=”true”效果一样
- contenteditable=”events”
- contenteditable=”caret”
- contenteditable=”typing”
- contenteditable=”plaintext-only” //可编辑,只允许纯文本
- contenteditable=”true” //可编辑,支持富文本
- contenteditable=”false” //不可编辑
js
当元素为editable状态时
- document.execCommand生效, 作用于活跃(被选择的)的部分.
- 元素原本注册的时间就都失效了.
参考: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Editable_content
document.execCommand
- 参考: https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand#Commands
貌似关键点在这里. 神奇了……
- formatBlock貌似可以用来处理当前行. 其实不行