這個(gè)組件是全局加載的,一進(jìn)去會(huì)addEventListener一個(gè)鍵盤(pán)事件,按Ctrl+S喚起這個(gè)組件,但是這個(gè)快捷鍵,同樣也是瀏覽器的一個(gè)快捷鍵,所以打開(kāi)了組件又喚起了瀏覽器的行為,然后我加了e.preventDefault()和e.stopPropagation()阻止瀏覽器行為,但是所有輸入框都輸入不了了,都被阻止了。
解決方法:應(yīng)該先判斷鍵盤(pán)按鍵, 再進(jìn)行阻止!
this.keyboardHandle = (e) => { const { ctrlKey, shiftKey, altKey, keyCode } = e; if (keyCode === 83 && ctrlKey && !shiftKey && !altKey) { this.visible = !this.visible; e.preventDefault(); e.stopPropagation(); alert("和默認(rèn)的保存網(wǎng)頁(yè)快捷鍵不沖突了!") } }; document.addEventListener("keydown", this.keyboardHandle);