在ck-editor文档中,CkEDITOR.dom.document定义为 -
Represents a DOM document.
,示例为 -
var document = new CKEDITOR.dom.document( document )
参数'文件'应该是什么?这个功能?
同样在CKEDITOR核心代码库中给出了这个定义 -
CKEDITOR.document = new CKEDITOR.dom.document( document );
表示CKEDITOR.document是包含CKEDITOR实例的窗口的文档。例如,可以从窗口的DOM中获取任何内容 -
alert( CKEDITOR.document.getBody().getName() ); // 'body'
我对两者的重要性以及如何以不同方式使用它们,在哪里使用它们感到困惑?
感谢。
答案 0 :(得分:9)
CKEDITOR.document
如您所见CKEDITOR.document
定义如下
CKEDITOR.document = new CKEDITOR.dom.document( document );
这意味着它是CKEditor库的最高 document
。这是包含和加载库的文档。通常,它也是网页的最顶层文档
window.document === CKEDITOR.document.$ // true
CKEDITOR.document
也是所有CKEditor inline instances的通用文档。因此,如果你创建了许多像
var i1 = CKEDITOR.inline( 'inline1' );
var i2 = CKEDITOR.inline( 'inline2' );
您会注意到所有这些文件共享同一文件
i1.document.equals( CKEDITOR.document ); // true
i2.document.equals( CKEDITOR.document ); // true
因为WYSIWYG编辑直接在CKEDITOR.document
内的contenteditable元素中进行。
CKEDITOR.document
和editor.document
另一方面,网页中可能有许多子文档,即因为每个<iframe>
表示新的window
和window.document
。这正是您创建classic editor instance时会发生的情况,该contenteditable带来了一个新的<iframe>
CKEDITOR.editor-property-document
正文进行编辑(是的,您正在编辑<iframe>
内的文字,而不是{ {1}})。
您可能会注意到每个实例都有自己独立的<textarea>
(CKEDITOR.document
),而这些文档与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
是最顶层的editor.document
,其中包含并加载了CKEditor库。document
),而所有CKEDITOR.dom.document
都有自己的文档。CKEDITOR.dom.domObject
是CKEditor库的构造函数,它将本机DOM文档包装到equals()
中,向用户公开了很好的API(如CKEDITOR.dom.element
方法),以便在代码中进行操作。
CKEDITOR.document
和CKEDITOR.document
都是editor.document
。