Procházet zdrojové kódy

Stopped using some native features which MS Edge doesn't support yet.

Piotrek Koszuliński před 8 roky
rodič
revize
ff871f9271

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

@@ -7,7 +7,7 @@
  * @module engine/view/domconverter
  */
 
-/* globals Range, Node, NodeFilter */
+/* globals document, Node, NodeFilter */
 
 import ViewText from './text';
 import ViewElement from './element';
@@ -146,7 +146,8 @@ export default class DomConverter {
 			this._domToViewMapping.delete( domElement );
 			this._viewToDomMapping.delete( viewElement );
 
-			for ( let child of domElement.childNodes ) {
+			// Use Array.from because of MS Edge (#923).
+			for ( let child of Array.from( domElement.childNodes ) ) {
 				this.unbindDomElement( child );
 			}
 		}
@@ -259,7 +260,7 @@ export default class DomConverter {
 		const domStart = this.viewPositionToDom( viewRange.start );
 		const domEnd = this.viewPositionToDom( viewRange.end );
 
-		const domRange = new Range();
+		const domRange = document.createRange();
 		domRange.setStart( domStart.parent, domStart.offset );
 		domRange.setEnd( domEnd.parent, domEnd.offset );
 
@@ -778,7 +779,7 @@ export default class DomConverter {
 
 		// Since it takes multiple lines of code to check whether a "DOM Position" is before/after another "DOM Position",
 		// we will use the fact that range will collapse if it's end is before it's start.
-		const range = new Range();
+		const range = document.createRange();
 
 		range.setStart( selection.anchorNode, selection.anchorOffset );
 		range.setEnd( selection.focusNode, selection.focusOffset );

+ 3 - 2
packages/ckeditor5-engine/src/view/filler.js

@@ -3,7 +3,7 @@
  * For licensing, see LICENSE.md.
  */
 
-/* globals window, Range, Text */
+/* globals window, Text */
 
 import { keyCodes } from '@ckeditor/ckeditor5-utils/src/keyboard';
 
@@ -162,7 +162,8 @@ function jumpOverInlineFiller( evt, data ) {
 			const domOffset = domSelection.getRangeAt( 0 ).startOffset;
 
 			if ( startsWithFiller( domParent ) && domOffset <= INLINE_FILLER_LENGTH ) {
-				const domRange = new Range();
+				const domRange = domParent.ownerDocument.createRange();
+
 				domRange.setStart( domParent, 0 );
 				domRange.collapse( true );
 				domSelection.removeAllRanges();

+ 2 - 3
packages/ckeditor5-engine/src/view/renderer.js

@@ -20,8 +20,6 @@ import log from '@ckeditor/ckeditor5-utils/src/log';
 import ObservableMixin from '@ckeditor/ckeditor5-utils/src/observablemixin';
 import CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';
 
-/* global Range */
-
 /**
  * Renderer updates DOM structure and selection, to make them a reflection of the view structure and selection.
  *
@@ -560,7 +558,8 @@ export default class Renderer {
 		// Update selection.
 		const domSelection = domDocument.getSelection();
 		domSelection.removeAllRanges();
-		const domRange = new Range();
+
+		const domRange = domDocument.createRange();
 		domRange.selectNodeContents( this._fakeSelectionContainer );
 		domSelection.addRange( domRange );
 

+ 2 - 2
packages/ckeditor5-engine/tests/controller/editingcontroller.js

@@ -3,7 +3,7 @@
  * For licensing, see LICENSE.md.
  */
 
-/* globals setTimeout, Range, document */
+/* globals setTimeout, document */
 
 import EmitterMixin from '@ckeditor/ckeditor5-utils/src/emittermixin';
 
@@ -210,7 +210,7 @@ describe( 'EditingController', () => {
 			const domSelection = document.getSelection();
 			domSelection.removeAllRanges();
 			const domBar = domRoot.childNodes[ 2 ].childNodes[ 0 ];
-			const domRange = new Range();
+			const domRange = document.createRange();
 			domRange.setStart( domBar, 1 );
 			domRange.setEnd( domBar, 2 );
 			domSelection.addRange( domRange );

+ 2 - 2
packages/ckeditor5-engine/tests/view/document/jumpoverinlinefiller.js

@@ -3,7 +3,7 @@
  * For licensing, see LICENSE.md.
  */
 
-/* globals document, Range */
+/* globals document */
 
 import ViewRange from '../../../src/view/range';
 import ViewDocument from '../../../src/view/document';
@@ -108,7 +108,7 @@ describe( 'Document', () => {
 			const domSelection = document.getSelection();
 			domB.childNodes[ 0 ].data += 'x';
 
-			const domRange = new Range();
+			const domRange = document.createRange();
 			domSelection.removeAllRanges();
 			domRange.setStart( domB.childNodes[ 0 ], INLINE_FILLER_LENGTH + 1 );
 			domRange.collapse( true );

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

@@ -3,7 +3,7 @@
  * For licensing, see LICENSE.md.
  */
 
-/* globals Range, document */
+/* globals document */
 
 import ViewElement from '../../../src/view/element';
 import ViewRange from '../../../src/view/range';
@@ -545,7 +545,7 @@ describe( 'DomConverter', () => {
 			converter.bindElements( domP, viewP );
 			converter.bindElements( domB, viewP.getChild( 1 ) );
 
-			const domRange = new Range();
+			const domRange = document.createRange();
 			domRange.setStart( domFoo, 1 );
 			domRange.setEnd( domBar, 2 );
 
@@ -560,7 +560,7 @@ describe( 'DomConverter', () => {
 			const domB = createElement( document, 'b', null, domBar );
 			createElement( document, 'p', null, [ domFoo, domB ] );
 
-			const domRange = new Range();
+			const domRange = document.createRange();
 			domRange.setStart( domFoo, 1 );
 			domRange.setEnd( domBar, 2 );
 
@@ -584,7 +584,7 @@ describe( 'DomConverter', () => {
 
 			document.body.appendChild( domP );
 
-			const domRange = new Range();
+			const domRange = document.createRange();
 			domRange.setStart( domFoo, 1 );
 			domRange.setEnd( domBar, 2 );
 
@@ -617,7 +617,7 @@ describe( 'DomConverter', () => {
 
 			document.body.appendChild( domP );
 
-			const domRange = new Range();
+			const domRange = document.createRange();
 			domRange.setStart( domFoo, 2 );
 			domRange.collapse( true );
 
@@ -642,7 +642,7 @@ describe( 'DomConverter', () => {
 
 			document.body.appendChild( domP );
 
-			const domRange = new Range();
+			const domRange = document.createRange();
 			domRange.setStart( domFoo, 1 );
 			domRange.setEnd( domBar, 2 );
 
@@ -665,7 +665,7 @@ describe( 'DomConverter', () => {
 			viewSelection.addRange( ViewRange.createIn( new ViewElement() ) );
 			converter.bindFakeSelection( domContainer, viewSelection );
 
-			const domRange = new Range();
+			const domRange = document.createRange();
 			domRange.selectNodeContents( domContainer );
 			domSelection.removeAllRanges();
 			domSelection.addRange( domRange );
@@ -685,7 +685,7 @@ describe( 'DomConverter', () => {
 			viewSelection.addRange( ViewRange.createIn( new ViewElement() ) );
 			converter.bindFakeSelection( domContainer, viewSelection );
 
-			const domRange = new Range();
+			const domRange = document.createRange();
 			domRange.selectNodeContents( domContainer.firstChild );
 			domSelection.removeAllRanges();
 			domSelection.addRange( domRange );

+ 2 - 1
packages/ckeditor5-engine/tests/view/observer/domeventdata.js

@@ -14,7 +14,8 @@ describe( 'DomEventData', () => {
 	// Todo: the whole `before` hook can be removed.
 	// Depends on: https://github.com/ckeditor/ckeditor5-engine/issues/647
 	before( () => {
-		for ( const node of document.body.childNodes ) {
+		// Use Array.from because of MS Edge (#923).
+		for ( const node of Array.from( document.body.childNodes ) ) {
 			// Remove all <!-- Comments -->
 			if ( node.nodeType === 8 ) {
 				document.body.removeChild( node );

+ 1 - 1
packages/ckeditor5-engine/tests/view/observer/domeventobserver.js

@@ -146,7 +146,7 @@ describe( 'DomEventObserver', () => {
 		viewDocument.addObserver( ClickCapturingObserver );
 
 		viewDocument.on( 'click', ( evt, domEventData ) => {
-			expect( domEventData.domEvent.eventPhase ).to.equal( MouseEvent.CAPTURING_PHASE );
+			expect( domEventData.domEvent.eventPhase ).to.equal( domEventData.domEvent.CAPTURING_PHASE );
 			done();
 		} );
 

+ 1 - 1
packages/ckeditor5-engine/tests/view/observer/focusobserver.js

@@ -171,7 +171,7 @@ describe( 'FocusObserver', () => {
 			}, { priority: 'low' } );
 
 			observer.onDomEvent( { type: 'focus', target: domEditable } );
-			domSelection.collapse( domEditable );
+			domSelection.collapse( domEditable, 0 );
 		} );
 
 		it( 'should render without selectionChange event', ( done ) => {

+ 6 - 6
packages/ckeditor5-engine/tests/view/renderer.js

@@ -3,7 +3,7 @@
  * For licensing, see LICENSE.md.
  */
 
-/* globals Range, document, window */
+/* globals document, window */
 
 import ViewElement from '../../src/view/element';
 import ViewText from '../../src/view/text';
@@ -836,7 +836,7 @@ describe( 'Renderer', () => {
 			domP.appendChild( document.createTextNode( 'x' ) );
 
 			domSelection.removeAllRanges();
-			const domRange = new Range();
+			const domRange = document.createRange();
 			domRange.setStart( domP.childNodes[ 0 ], 1 );
 			domRange.collapse( true );
 			domSelection.addRange( domRange );
@@ -915,7 +915,7 @@ describe( 'Renderer', () => {
 			domP.appendChild( BR_FILLER( document ) );
 
 			domSelection.removeAllRanges();
-			const domRange = new Range();
+			const domRange = document.createRange();
 			domRange.setStart( domP.childNodes[ 0 ], 0 );
 			domRange.collapse( true );
 			domSelection.addRange( domRange );
@@ -967,7 +967,7 @@ describe( 'Renderer', () => {
 			domB.childNodes[ 0 ].data += 'x';
 
 			domSelection.removeAllRanges();
-			const domRange = new Range();
+			const domRange = document.createRange();
 			domRange.setStart( domB.childNodes[ 0 ], INLINE_FILLER_LENGTH + 1 );
 			domRange.collapse( true );
 			domSelection.addRange( domRange );
@@ -1124,7 +1124,7 @@ describe( 'Renderer', () => {
 			const domSelection = document.getSelection();
 
 			domSelection.removeAllRanges();
-			const domRange = new Range();
+			const domRange = document.createRange();
 			domRange.setStart( domDiv, 0 );
 			domRange.collapse( true );
 			domSelection.addRange( domRange );
@@ -1151,7 +1151,7 @@ describe( 'Renderer', () => {
 			const domSelection = document.getSelection();
 
 			domSelection.removeAllRanges();
-			const domRange = new Range();
+			const domRange = document.createRange();
 			domRange.setStart( domDiv, 0 );
 			domRange.collapse( true );
 			domSelection.addRange( domRange );