命令API
最后更新于:2022-04-01 23:43:11
####命令API
以下是编辑器命令操作相关的API,**使用以下API,最好先要了解浏览器的`document.execCommand`的相关知识**
-----
- **`editor.command`**
对`document.execCommand`执行浏览器基础命令的封装。在二次开发中,如果遇到这种情况,尽量用分装好的`edtior.command`。例如:
```js
$('#btn').click(function (e) {
// 注意,下面的 e 参数尽量要传,否则可能导致其他问题
// 等同于 document.execCommand('bold')
editor.command(e, 'bold');
// 等同于 document.exexCommand('BackColor', false, '#003399')
editor.command(e, 'BackColor', '#003399');
});
```
-----
- **`editor.commandForElem`**
针对当前选中的元素,向上查找,得到符合传入条件的父元素。然后把这个父元素当做选区,来执行命令。除了第一个参数之外,后面的参数和`editor.command`相同。例如:
```js
$('#btn').click(function (e) {
// 注意,下面的 e 参数尽量要传,否则可能导致其他问题
// 针对当前选区所处于的 b strong 元素,然后执行命令
editor.command('b,strong', e, 'bold');
// 为所处的整个 p 元素设置背景色
editor.command('p', e, 'BackColor', '#003399');
});
```
-----
- **`editor.customCommand`**
用于自定义的命令操作,而非`document.execCommand`提供的基础命令。
**注意,建议你对编辑内容的所有修改,都使用命令的方式。如果基础命令满足不了要求,一定要使用这里的自定义命令。不要忽略命令,自己写代码来修改。那样会出现各种问题!!!**如果觉得好奇,可以搜索源码中的`E.fn.customCommand`来看看,自定义命令中那些复杂的操作过程。
程序举例:
```js
$('#btn').click(function (e) {
// 注意,下面的 e 参数尽量要传,否则可能导致其他问题
editor.command(e, function () {
// 这里的 this 指向 editor 对象本身
var editor = this;
editor.$txt.append('
';
自定义命令追加的内容
'); }); }); ``` ----- - **`editor.queryCommandValue`** 对`document.queryCommandValue`的封装,使用方法和`document.queryCommandValue`一样。分装中,规避了`IE8`异常错误。 ----- - **`editor.queryCommandState`** 对`document.queryCommandState`的封装,使用方法和`document.queryCommandState`一样。分装中,规避了`IE8`异常错误。 ----- - **`editor.queryCommandSupported`** 对`document.queryCommandSupported`的封装,使用方法和`document.queryCommandSupported`一样。分装中,规避了`IE8`异常错误。 ---- - **`editor.commandHooks`** 当遇到浏览器的`document.execCommand`不支持的命令时,就需要自定义一个命令,放在`editor.commandHooks`中。例如,IE浏览器的`document.execCommand`不支持`insertHtml`命令,为了保证IE浏览器的可用性,就需要增加这样的hook ```js editor.commandHooks.insertHtml = function (html) { var $elem = $(html); var rangeElem = editor.getRangeElem(); var targetElem; targetElem = editor.getLegalTags(rangeElem); if (!targetElem) { return; } $(targetElem).after($elem); }; ```