Evt.preventDefault не работает в IE и Edge при перемещении мыши, даже пытался evt.returnValue = false; но не работает, чтобы остановить распространение
У меня есть большой div. При попытке изменить размер страницы вся страница выбирается синим цветом, хотя я не собираюсь в iE и Edge. Я попробовал много решений, показанных в Интернете, но ничего не получилось. Ниже мой код. Я не могу предотвратить действие по умолчанию событием при перемещении мыши. Я слушаю ownerDocument для события перемещения мыши.
Ниже код работает как ожидается в chrome и mozilla
Я видел в консоли, проверяя переменную evt, до того, как распространение прерываний предотвратит по умолчанию значение true, после того, как прекращение распространения предотвратит по умолчанию значение false. То же, что и поведение google chromes, но все равно не получается, почему выбрана целая страница.
Изменить код:
<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);
}
Ответы
Ответ 1
Вместо создания evt.preventDefault(); в перемещении мыши сделайте это в самом mousedown/Click событии
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);
}
Ответ 2
Если проблема заключается в том, что страница выбрана с синим цветом, существует еще один способ предотвращения выбора.
Попробуйте следующее:
<body onselectstart="return false">
Ответ 3
Попробуйте этот шаблон:
if (event.preventDefault){
event.preventDefault();
}
else {
event.returnValue = false;
}