Ticket #8226: 8226_3.patch

File 8226_3.patch, 3.0 KB (added by Garry Yao, 12 years ago)
  • _source/core/dom/element.js

     
    14791479                                }
    14801480                        }
    14811481
    1482                         return $ && new CKEDITOR.dom.document( $.contentWindow.document );
     1482                        return $ && $.contentWindow && new CKEDITOR.dom.document( $.contentWindow.document );
    14831483                },
    14841484
    14851485                /**
     
    15801580                        return this.$.childNodes.length;
    15811581                },
    15821582
     1583                /**
     1584                 *  Whether this element is not yet presented in the DOM tree.
     1585                 */
     1586                isOffline : function()
     1587                {
     1588                        var root = this.getDocument().getDocumentElement();
     1589                        return !root.contains( this );
     1590                },
     1591
    15831592                disableContextMenu : function()
    15841593                {
    15851594                        this.on( 'contextmenu', function( event )
  • _source/plugins/wysiwygarea/plugin.js

     
    10321032                                                                        xmlDeclaration = fullPage && editor.xmlDeclaration,
    10331033                                                                        doc = iframe.getFrameDocument();
    10341034
     1035                                                                if ( !doc )
     1036                                                                        return null;
     1037
    10351038                                                                var data = fullPage
    10361039                                                                        ? doc.getDocumentElement().getOuterHtml()
    10371040                                                                        : doc.getBody().getHtml();
  • _source/core/editor.js

     
    465465                                                || getNewName();
    466466
    467467                        if ( this.name in CKEDITOR.instances )
    468                                 throw '[CKEDITOR.editor] The instance "' + this.name + '" already exists.';
     468                        {
     469                                var previous = CKEDITOR.instances[ this.name ];
    469470
     471                                // Destroy detached editor silently.
     472                                if ( previous.checkDetached() )
     473                                        previous.destroy( false );
     474                                else
     475                                        throw '[CKEDITOR.editor] The instance "' + previous.name + '" already exists.';
     476                        }
     477
    470478                        /**
    471479                         * A unique random string assigned to each editor instance on the page.
    472480                         * @name CKEDITOR.editor.prototype.id
     
    562570                 */
    563571                destroy : function( noUpdate )
    564572                {
    565                         if ( !noUpdate )
    566                                 this.updateElement();
    567 
    568                         this.fire( 'destroy' );
    569                         this.theme && this.theme.destroy( this );
     573                        if ( !this.checkDetached() )
     574                        {
     575                                !noUpdate && this.updateElement();
     576                                this.theme && this.theme.destroy( this );
     577                        }
    570578
     579                        this.fire( 'destroy' );
    571580                        CKEDITOR.remove( this );
    572581                        CKEDITOR.fire( 'instanceDestroyed', null, this );
    573582                },
     
    865874                                else
    866875                                        element.setHtml( data );
    867876                        }
     877                },
     878
     879                /**
     880                 * Check whether the editor UI has been removed from DOM thus
     881                 * the editor instance is considered to be obsoleted.
     882                 * @since 3.6.2
     883                 * @example
     884                 * editor.container.remove();
     885                 * alert( editor.checkDetached() );
     886                 */
     887                checkDetached : function()
     888                {
     889                        this.element.isOffline() || this.container && this.container.isOffline();
    868890                }
    869891        });
    870892
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy