Просмотр исходного кода

fix: remove methods for CSSRenderer Objects within iframe (#29663)

* fix: remove methods for CSSRenderer Objects within iframe

* Element.remove() is widely supported
Akihiro Oyamada 1 год назад
Родитель
Сommit
aa4fa45095
2 измененных файлов с 13 добавлено и 7 удалено
  1. 6 3
      examples/jsm/renderers/CSS2DRenderer.js
  2. 7 4
      examples/jsm/renderers/CSS3DRenderer.js

+ 6 - 3
examples/jsm/renderers/CSS2DRenderer.js

@@ -26,9 +26,12 @@ class CSS2DObject extends Object3D {
 
 			this.traverse( function ( object ) {
 
-				if ( object.element instanceof Element && object.element.parentNode !== null ) {
+				if (
+					object.element instanceof object.element.ownerDocument.defaultView.Element &&
+					object.element.parentNode !== null
+				) {
 
-					object.element.parentNode.removeChild( object.element );
+					object.element.remove();
 
 				}
 
@@ -135,7 +138,7 @@ class CSS2DRenderer {
 				return;
 
 			}
-			
+
 			if ( object.isCSS2DObject ) {
 
 				_vector.setFromMatrixPosition( object.matrixWorld );

+ 7 - 4
examples/jsm/renderers/CSS3DRenderer.js

@@ -32,9 +32,12 @@ class CSS3DObject extends Object3D {
 
 			this.traverse( function ( object ) {
 
-				if ( object.element instanceof Element && object.element.parentNode !== null ) {
+				if (
+					object.element instanceof object.element.ownerDocument.defaultView.Element &&
+					object.element.parentNode !== null
+				) {
 
-					object.element.parentNode.removeChild( object.element );
+					object.element.remove();
 
 				}
 
@@ -254,10 +257,10 @@ class CSS3DRenderer {
 		function hideObject( object ) {
 
 			if ( object.isCSS3DObject ) object.element.style.display = 'none';
-	  
+
 			for ( let i = 0, l = object.children.length; i < l; i ++ ) {
 
-			  hideObject( object.children[ i ] );
+				hideObject( object.children[ i ] );
 
 			}
 

粤ICP备19079148号