浏览代码

Allow creating namespaced domelements

Sebastian Helzle 6 年之前
父节点
当前提交
47a02c574d

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

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

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

@@ -175,6 +175,15 @@ describe( 'DomConverter', () => {
 			expect( converter.domToView( comment ) ).to.be.null;
 		} );
 
+		it( 'should create namespaced elements', () => {
+			const namespace = 'http://www.w3.org/2000/svg';
+			const svg = createElement( document, 'svg', { xmlns: namespace } );
+
+			const viewSvg = converter.domToView( svg );
+
+			expect( viewSvg.getAttribute( 'xmlns' ) ).to.equal( namespace );
+		} );
+
 		describe( 'it should clear whitespaces', () => {
 			it( 'at the beginning of block element', () => {
 				const domDiv = createElement( document, 'div', {}, [