CKEDITOR.document和CKEDITOR.dom.document有什么区别?

时间:2015-07-01 22:02:06

标签: javascript dom ckeditor

在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'

我对两者的重要性以及如何以不同方式使用它们,在哪里使用它们感到困惑?

感谢。

1 个答案:

答案 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.documenteditor.document

另一方面,网页中可能有许多子文档,即因为每个<iframe>表示新的windowwindow.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 )

结论

总结一下