2017-08-04 4 views
11

Ich habe eine re ansible div. Beim Versuch, die Größe zu ändern, wird die ganze Seite mit blauer Farbe ausgewählt, obwohl ich nicht in IE und Edge beabsichtigt habe. Ich habe viele Lösungen im Internet getestet, aber nichts hat funktioniert. Unten ist mein Code. Ich kann die Standardaktion nach Ereignis beim Bewegen der Maus nicht verhindern. Ich höre auf eignerDokument für Mausbewegung Ereignis.evt.preventDefault funktioniert nicht in IE und Edge bei Mausbewegung Ereignis, sogar versucht evt.returnValue = false; aber hat nicht funktioniert, um die Ausbreitung zu stoppen

Im Folgenden Code funktioniert wie in Chrom und mozilla erwartet

Ich habe in der Konsole gesehen von in evt variable Inspektion vor Ausbreitungsstopp verhindert Standard wahr ist, nach der Ausbreitung Anschlag verhindert Standard falsch ist. Die gleiche wie Google Chromes Verhalten, aber immer noch nicht bekommen, warum Seite ganz

ausgewählt zu werden

-Code Reagieren:

<div className="resizer" 
     tabIndex={-1} 
     onMouseDown={this.MouseDown} 
/> 


private MouseDown(evt: any) { 
     this.viewState.resizing = true; 
     const {ownerDocument} = ReactDOM.findDOMNode(this); 
     ownerDocument.addEventListener('mousemove', this.MouseMove); 
     ownerDocument.addEventListener('mouseup', this.MouseUp); 

     this.setState(this.viewState); 
    } 

private MouseMove(evt) { 
     this.viewState.width = width; 
     this.viewState.height = height; 


     if (evt.preventDefault) { 
      evt.returnValue = false; 
      evt.preventDefault(); 
     } 
     else { 
      evt.cancelBubble = true; 
     } 


     this.setState(this.viewState); 
    } 

Antwort

5

Statt evt.preventDefault machen(); in Maus bewegen es in mousedown- machen/Click Ereignis selbst

private MouseDown(evt: any) { 
     this.viewState.resizing = true; 
     const {ownerDocument} = ReactDOM.findDOMNode(this); 
     evt.preventDefault(); 
     evt.stopPropagation(); 
     ownerDocument.addEventListener('mousemove', this.MouseMove); 
     ownerDocument.addEventListener('mouseup', this.MouseUp); 

     this.setState(this.viewState); 
    } 
1

dieses Muster Versuchen:

if (event.preventDefault){ 
    event.preventDefault(); 
} 
else { 
    event.returnValue = false; 
} 
+0

Didnt Arbeit, die ich auch return false Maus bewegen Funktion hinzugefügt haben – Labeo

2

Wenn das Problem ist, dass die Seite mit ausgewähltem wird blaue Farbe, gibt es einen anderen Ansatz, um die Auswahl zu verhindern.

Versuchen Sie folgendes:

<body onselectstart="return false"> 
+0

Aber wir können nicht vollständig diese Funktionalität entfernen. Hier wollen wir diese Funktionalität nur dann verhindern, wenn wir das Element div skalieren. – Labeo

+0

Haben Sie diesen Ansatz mit 'addEventListener' und' removeEventListener' versucht ?. Ich vermute, Sie haben ein 'onDragStart' oder' onMouseDown' Ereignisse und andere Ereignisse, wenn die Interaktion endet wie 'onDragEnd' oder' onMouseUp'. Eine andere Alternative, die Sie ausprobieren könnten, ist das Draggable-Tool von GreenSock https://greensock.com/draggable – Rodrigo

Verwandte Themen