CKEDITOR.dococument和CKEDITOR.dom.document有什么区别
What is the difference between CKEDITOR.document and CKEDITOR.dom.document?
在ck编辑器文档中,CkEDITOR.dom文档被定义为-
Represents a DOM document.
示例为-
var document = new CKEDITOR.dom.document( document )
这个函数的参数"document"应该是什么?
同样在CKEDITOR核心代码库中,给出了这个定义-
CKEDITOR.document = new CKEDITOR.dom.document( document );
它表示CKEDITOR.dococument是包含CKEDITOR实例的窗口的文档。可以从窗口的DOM中获取任何东西,例如
alert( CKEDITOR.document.getBody().getName() ); // 'body'
我对两者的意义感到困惑,以及如何以不同的方式使用它们,在哪里使用它们?
谢谢。
CKEDITOR.document
正如您所注意到的,CKEDITOR.document
的定义如下
CKEDITOR.document = new CKEDITOR.dom.document( document );
这意味着它是CKEditor库的最顶层document
。这是包含和加载库的文档。通常,它也是网页的最顶层文档
window.document === CKEDITOR.document.$ // true
CKEDITOR.document
也是所有CKEditor内联实例的通用文档。因此,如果你创建了一些像这样的
var i1 = CKEDITOR.inline( 'inline1' );
var i2 = CKEDITOR.inline( 'inline2' );
你会注意到它们都共享同一个文档
i1.document.equals( CKEDITOR.document ); // true
i2.document.equals( CKEDITOR.document ); // true
因为所见即所得编辑直接在CCD_ 5内的内容可编辑元素中进行。
CKEDITOR.document
和editor.document
另一方面,网页中可能有许多子文档,即因为每个<iframe>
意味着新的window
和window.document
。这正是当您创建一个经典编辑器实例时所发生的情况,该实例带来了一个具有内容可编辑主体的新<iframe>
进行编辑(是的,您正在和<iframe>
中编辑文本,而不是<textarea>
)。
您可能会注意到,每个实例都有自己单独的document
(CKEDITOR.editor-property-document
),并且这些文档与CKEDITOR.document
没有任何关系。
var c1 = CKEDITOR.replace( 'textarea1' );
var c2 = CKEDITOR.replace( 'textarea2' );
c1.document.equals( CKEDITOR.document ); // false
c2.document.equals( CKEDITOR.document ); // false
c1.document.equals( c2.document ); // false
每个实例调用new CKEDITOR.dom.document( documentWithinAnIframe )
并将其分配给editor.document
。
结论
所以总结
- CCD_ 19是最上面的CCD_
editor.document
是一个与编辑器实例关联的文档。所有内联实例共享同一文档(CKEDITOR.document
),而所有经典实例都有自己的文档CKEDITOR.dom.document
是CKEditor库的构造函数,它将原生DOM文档封装到CKEDITOR.dom.domObject
中,向用户公开漂亮的API(如equals()
方法)以在代码中进行操作。- 它类似于
CKEDITOR.dom.element
,但用于文档而非元素 - CCD_ 27和CCD_ 28都是CCD_
- 它类似于
- CKEditor Widget-阻止编辑可编辑元素本身
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 全局变量和全局对象的属性之间有什么区别吗
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- Javascript中的空白是什么
- CKEditor-我在editor.css中的风格是't
- CKeditor:更改对话框中的默认选择选项
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 删除CKEditor工具栏按钮,但不删除功能
- 在ember/handlers中使用value和valueBinding有什么区别
- 什么'在webpack外部设置中,reactDom和reactDom不同
- 在JavaScript中拆分日期字符串的更好方法是什么
- CKEditor v4:自制插件中对话框的动态标题
- 为什么$.brower被弃用?还有什么更好的替代方案
- 这个示例 CKEditor JavaScript 函数有什么作用
- 在CKeditor上传图像的最低要求是什么?
- CKEDITOR.dococument和CKEDITOR.dom.document有什么区别