我对keydown上的html5视频行为感到困惑。似乎受controls
属性的影响。
首先,如果我设置了controls
属性,则浏览器似乎不尊重preventDefault()
。因此,下面的代码仅调用pause
,然后立即调用play
,基本上什么也没做。
<video controls id="v1" src="./video.mp4"></video>
<script>
const v1 = document.getElementById('v1')
v1.addEventListener('keydown', event => {
if (event.keyCode === 32) { // space
if (v1.paused) v1.play()
else v1.pause()
event.preventDefault() // this not working
}
})
</script>
第二,如果我未设置controls
属性,则浏览器根本不会触发keydown
事件。
<video id="v2" src="./video.mp4"></video>
<script>
const v2 = document.getElementById('v2')
v2.addEventListener('keydown', event => {
throw new Error('Fire me please ...') // this not throwed
})
</script>
我在那里想念什么?
PS :我正在使用Chromium版本73.0.3683.103