Explorar el Código

Merge pull request #1798 from Sebobo/t/1797

Feature: Added support for creating elements from other XML namespaces. See ckeditor/ckeditor5#2088.
Piotrek Koszuliński hace 6 años
padre
commit
681021a7a4

+ 5 - 1
packages/ckeditor5-engine/src/view/domconverter.js

@@ -224,7 +224,11 @@ export default class DomConverter {
 				return domElement;
 			} else {
 				// Create DOM element.
-				domElement = domDocument.createElement( viewNode.name );
+				if ( viewNode.hasAttribute( 'xmlns' ) ) {
+					domElement = domDocument.createElementNS( viewNode.getAttribute( 'xmlns' ), viewNode.name );
+				} else {
+					domElement = domDocument.createElement( viewNode.name );
+				}
 
 				if ( options.bind ) {
 					this.bindElements( domElement, viewNode );

+ 9 - 0
packages/ckeditor5-engine/tests/view/domconverter/view-to-dom.js

@@ -174,6 +174,15 @@ describe( 'DomConverter', () => {
 			expect( domTextNode.data ).to.equal( 'foo' );
 		} );
 
+		it( 'should create namespaced elements', () => {
+			const namespace = 'http://www.w3.org/2000/svg';
+			const viewSvg = new ViewElement( 'svg', { xmlns: namespace } );
+
+			const domSvg = converter.viewToDom( viewSvg, document );
+
+			expect( domSvg.createSVGRect ).to.be.a( 'function' );
+		} );
+
 		describe( 'it should convert spaces to  ', () => {
 			it( 'at the beginning of each container element', () => {
 				const viewDiv = new ViewContainerElement( 'div', null, [