vue.jsブラウザのデフォルトイベントを無効にする(tabキーを例に)
最初はkeydownイベントを傍受し、キー値に基づいてデフォルトイベントを無効にすると、実行不可能であることがわかりました.ソースコードは次のとおりです.
理由は,ここに伝わるvalが元のキーボードイベントではないため,以下の方法で発見できる可能性がある.
ページを離れてリスニングを破棄することを忘れないでください
これでtabキーを押すとブラウザ内で切り替えられず、出力があるだけです
mounted () {
window.addEventListener('keydown', this.onClick)
}
onClick (val) {
console.log(' ' + val.key)
console.log('keycode:' + val.keyCode)
console.log('thiscode:' + this.code)
if (val.keyCode === 9) {
console.log('tabfalse13')
val.keyCode = 0
val.returnValue = false
val.which = 0
val.preventDefault()
val.stopPropagation()
val.cancelBubble = true
window.event.keyCode = 0
window.event.returnValue = false
window.event.which = 0
window.event.preventDefault()
window.event.stopPropagation()
window.event.cancelBubble = true
return false
}
}
理由は,ここに伝わるvalが元のキーボードイベントではないため,以下の方法で発見できる可能性がある.
window.addEventListener('keydown', event => {
console.log(' ' + event.key)
console.log('keycode:' + event.keyCode)
console.log('thiscode:' + this.code)
if (event.keyCode === 9) {
console.log('tabfalse13')
event.preventDefault()
}
}
ページを離れてリスニングを破棄することを忘れないでください
destroyed () {
window.removeEventListener('keydown', event => {
console.log(event.value)
event.preventDefault()
})
これでtabキーを押すとブラウザ内で切り替えられず、出力があるだけです