富文本编辑

富文本编辑又称为: WYSIWYG(What You See Is What You Get,所见即所得)

常用于博客等用途,虽然没有规范,但是在IE最先引入后其他的浏览器厂商也相继完成了对应功能的实现

该技术的本质就是在 HTML 页面中嵌入<iframe>

通过设置页面的 designMode 属性,使该页面可以被编辑

将该属性设置为 on 后文档就会变得可编辑 "off" 是默认值

以下方的 HTML 代码为例

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
</body>
</html>

该页面在 iframe 中可以像其它页面一样被加载

如果要让该页面可编辑,则需要将 designMode 设置为 on

但是该属性只有在页面加载完成后才可以访问,所以需要借用 onload 事件在合适的时候设置该属性

如下代码所示:

<iframe name="richedit" style="height:500px;width:100px;" src="blank.html"></iframe>

<script>
window.onload=function(){
frames["richedit"].document.designMode = "on";
}
</script>

该代码片段执行后,页面中则会出现类似文本框的可编辑区字段,该字段具有与其他网页一一致的默认样式,但是通过对 blank.html 的 CSS 进行设置就可以修改可编辑区域的外观

contenteditable属性

除了使用 iframe 这种方式之外,另一种富文本内容的方式是使用名为: contenteditable 的特殊属性

该属性最早由IE实现,可以应用于页面中的任何元素,然后用户就可以编辑该元素

这种方式的优点在于:

  1. 不用 iframe,空白页,JS
  2. 只需要为元素设置 contenteditable 属性即可

该属性允许三种值:

  1. "true" 打开富文本编辑器
  2. "false" 表示关闭富文本编辑器
  3. "inherit" 表示该值从父元素继承

Javascript高级编程学习笔记(81)—— 富文本(1)的更多相关文章

  1. Javascript高级编程学习笔记(83)—— 富文本选区(3)

    富文本选区 在富文本编辑器中使用 iframe 的 getSelection() 方法可以获取选中的文本 该方法是 window 对象和 document 对象的属性,调用后会返回一个当前选选择文本的 ...

  2. Javascript高级编程学习笔记(82)—— 富文本操作(2)

    操作富文本 与富文本编辑器的交互的主要方式就是使用 document.execCommand() 方法 该方法可以对文档执行自定义命令,并且可以应用大多数格式 该方法接收三个参数: 要执行命令的名称 ...

  3. Javascript高级编程学习笔记(88)—— Canvas(5)绘制文本

    绘制文本 同样的,canvas也为绘制文本提供了相应的方法. 2D上下文提供的文本绘制方法主要有两个: fillText() strokeText() 这两个方法都接受四个参数 要绘制的文本字符串 绘 ...

  4. Javascript高级编程学习笔记(76)—— 表单(4)选择文本

    文本框脚本 在HTML中文本框有两种实现方式: <input> <textarea> 这两种实现方式虽然在多数情况下表现一致,但是两者之间仍存在许多重要区别 对于<inp ...

  5. Javascript高级编程学习笔记(64)—— 事件(8)键盘与文本事件

    键盘与文本事件 用户在使用键盘时会触发键盘事件 “DOM2级事件”最初规定了键盘事件,但是最后在定稿时又删除了相应内容 所以键盘事件被放入了DOM3级事件的规范中 总的来说有三个键盘事件: keydo ...

  6. Javascript高级编程学习笔记(53)—— DOM2和DOM3(5)遍历

    遍历 “DOM2级遍历和范围” 定义了两个用于辅助完成顺序遍历的DOM结构类型 NodeIterator 和 TreeWalk 上述两种类型可以基于给定起点的DOM结构执行深度优先的遍历操作 对于检测 ...

  7. Javascript高级编程学习笔记(37)—— DOM(3)Element

    Element类型 除了Document类型之外,Element类型应该就是web编程中最常用的类型了 Element类型主要用于表现XML.HTML元素,提供对元素标签名.子节点以及特性的访问 特性 ...

  8. Javascript高级编程学习笔记(35)—— DOM(1)节点

    DOM JS由三部分组成 1.BOM 2.DOM 3.ECMAScript ES和BOM在前面的文章已经介绍过了 今天开始JS组成的最后一部分DOM(文档对象模型) 我们知道,JS中的这三个部分实际上 ...

  9. Javascript高级编程学习笔记(15)—— 引用类型(4)RegExp类型

    JS中处理字符串最常用的应该就是正则了 同样正则(RegExp)类型也是JS中引用类型的一种 ECMAScript通过 RegExp类型 来支持正则表达式 创建正则 var expression = ...

随机推荐

  1. Oracle 存储过程笔记.

    业务说明: 主要用于计算采购加权平均价.入参为年份和月份,首先判断输入的年月是否已经结账,如果已经结账就将所有物料和供应商的采购加权平均价返回. 要点说明: 1.如何在存储过程中定义临时表 答:ora ...

  2. python 获取流文件 大小

    buffer_file_content=u"流文件内容" file_size = len(buffer_file_content)/ #kb

  3. JS练习第三课

    用typeof查看数据类型 <pre> <script type="text/javascript"> alert(typeof 12345); <s ...

  4. The Swap

    源程序 swap.cpp* 输入文件 swap.in 输出文件 swap.out 时间限制 1s 空间限制 256MB [问题描述] Alice 得到了一个整数, 她将其视作长度为 n 的字符串 S. ...

  5. skynet记录7:服务(c和lua)

    稍后填坑 1.c服务的写法(第一个服务logger分析) 2.lua服务的写法(第二个服务bootstrap分析) 3.snlua包装模块

  6. java - Integer、int 、String相互转换总结

    一下子还真记不清这三种数据类型之间的转换方法,所以做个小笔记. public class Test03 { public static void main(String[] args) { //int ...

  7. Filezilla server配置FTP服务器中的各种问题与解决方法

    转至;https://www.jb51.net/article/122171.htm 安装文件以及补丁下载 公司很多资料需要通过ftp上传,那么就需要配置一个FTP服务器,找了一台Windows服务器 ...

  8. Vmware 无法启动虚拟机 -VMware Workstation and Device/Credential Guard are not compatible.

    因为在学习Linux,起初尝试用Hyper-V安装Linux进行学习,之后为了方便和老师的设置一样,所以改装了VMware,所有初始设置先好后发现,虚机机无法启用. VMware也提示不支持CPU虚拟 ...

  9. 浅谈JS面向对象

    浅谈JS面向对象 一 .什么是面向过程 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了.注重代码的过程部分. 二.什么是面向对象 最先出现在管理学 ...

  10. requests+正则爬取猫眼电影前100

    最近复习功课,日常码农生活. import requests from requests.exceptions import RequestException import re import jso ...