高级JavaScript。如何用JavaScript手撸一个富文本编辑器?

要素过多建议收藏


- 富文本编辑

基本的技术就是在空白 HTML 文件中嵌入一个
iframe 。通过 designMode 属性,可以将这个空白文档变成可以编辑的,实际编辑的则是 元素
HTML designMode 属性有两个可能的值: "off" (默认值)和 "on" 。设置为 "on" 时,整个文档
都会变成可以编辑的(显示插入光标),从而可以像使用文字处理程序一样编辑文本,通过键盘将文本
标记为粗体、斜体,等等。
作为 iframe 源的是一个非常简单的空白 HTML 页面。下面是一个例子:


	
		Blank Page for Rich Text Editing
	
	
	
这个页面会像其他任何页面一样加载到 iframe 里。为了可以编辑,必须将文档的 designMode
性设置为 "on" 。不过,只有在文档完全加载之后才可以设置。在这个包含页面内,需要使用 onload
事件处理程序在适当时机设置 designMode ,如下面的例子所示:
 
以上代码加载之后,可以在页面上看到一个类似文本框的区域。这个框的样式具有网页默认样式,
不过可以通过 CSS 调整。

- 使用 contenteditable

还有一种处理富文本的方式,也是 IE 最早实现的,即指定 contenteditable 属性。可以给页面
中的任何元素指定 contenteditable 属性,然后该元素会立即被用户编辑。这种方式更受欢迎,因为
不需要额外的 iframe 、空页面和 JavaScript ,只给元素添加一个 contenteditable 属性即可,比如:
contenteditable >
元素中包含的任何文本都会自动被编辑,元素本身类似于