evt.preventDefault 在 IE 和 Edge 中无法处理鼠标移动事件,甚至尝试过 evt.returnValue = false;但无法阻止传播

evt.preventDefault is not working in IE and Edge on mouse move event, even tried evt.returnValue = false; but didn't work to stop propagation

我有一个可调整大小的 div。在尝试调整它的大小时,整个页面都被选中为蓝色,即使我不打算在 iE 和 Edge 中这样做。我尝试了网上显示的许多解决方案,但没有任何效果。下面是我的代码。我无法阻止鼠标移动事件的默认操作。我正在监听 ownerDocument 的鼠标移动事件。

以下代码在 chrome 和 mozilla

中按预期工作

我通过检查 evt 变量在控制台中看到,在停止传播阻止之前默认为 true,在停止传播阻止之后默认为 false。与 google chrome 的行为相同,但仍然不明白为什么整个页面都被选中

反应代码:

 <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);
    }

试试这个模式:

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

如果问题是页面被选择为蓝色,还有另一种方法可以防止选择。

试试这个:

<body onselectstart="return false">

而不是 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);
    }