這個組件是全局加載的,一進去會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);