我希望基本上将向下箭头的行为提供给键j
,以便滚动文档。
这就是我所做的:
document.addEventListener("DOMContentLoaded", function() {
document.body.addEventListener("keydown", e => {
console.log(e.key, e.code, e.which);
});
const event = new KeyboardEvent("keydown", {
key: "ArrowDown",
bubbles: true,
code: 40,
isTrusted: true,
which: 40,
charCode: 40,
isComposing: true
});
document.body.dispatchEvent(event);
});
因此,它会触发侦听器,但不会滚动文档。这真的很奇怪,因为当我实际按下向下箭头时,监听器也被触发。
答案 0 :(得分:0)
dispatchEvent(event)
方法将调用您在Dom上绑定的EventListeners。但它不会触发浏览器的默认行为。
虽然您可以通过Javascript触发keydown
事件,但这并不意味着您可以模拟按键盘上的任意键。
我认为出于一些安全的原因,现在可以通过纯Javascript控制用户的键盘(也许某些浏览器插件可以做到这一点)。
所以,如果你真的想在按j
时滚动文档,我想你可以试试这个
document.body.addEventListener("keydown", e => {
console.log(e.key, e.code, e.which);
if (e.which === 74) {// 'key j'
for (var i = 0; i < 20; i++) {// scroll down smoothly
setTimeout( function() {
document.body.scrollTop += 1;
}, 10*i);
}
}
});
希望这可以帮到你。