这个组件是全局加载的,一进去会addEventListener一个键盘事件,按Ctrl+S唤起这个组件,但是这个快捷键,同样也是浏览器的一个快捷键,所以打开了组件又唤起了浏览器的行为,然后我加了e.preventDefault()和e.stopPropagation()阻止浏览器行为,但是所有输入框都输入不了了,都被阻止了。
解决方法:应该先判断键盘按键, 再进行阻止!
this.keyboardHandle = (e) => {
const { ctrlKey, shiftKey, altKey, keyCode } = e;
if (keyCode === 83 && ctrlKey && !shiftKey && !altKey) {
this.visible = !this.visible;
e.preventDefault();
e.stopPropagation();
alert("和默认的保存网页快捷键不冲突了!")
}
};
document.addEventListener("keydown", this.keyboardHandle);