我试图找到一种模拟按键的方法。
例如,当功能启动时,按键" Arrow Down"应按下,因此网页应略微滚动。
我只对Chrome感兴趣,jQuery或纯JS都适合。 (平原JS将更为可取)。
我试过的代码示例之一:
var e = $.Event("keydown", { keyCode: 40}); // 40 = down arrow
$("body").trigger(e);
// When I launch it the console, nothing happens. The page is not scrolled.
// May be I missed some obvious?
我搜索并发现了以下相关问题,但解决方案对我不起作用:
换句话说
使用AutoHotkey,您可以轻松制作如下内容:
Down::
Send, {Up}
然后,如果按Down
箭头键,它将被触发Up
。我只想用JS实现它。
答案 0 :(得分:7)
正如@rfsbsb指出:Jquery script for simulated key press down not running keyboard shortcut
如果您尝试触发某些浏览器或系统范围的键盘快捷方式 然后它是一个死胡同 - 出于安全原因不能这样做。如果它 有可能,你会有互联网上的页面 会(例如)将自己添加到你的书签,甚至没有询问 (通过使用Javascript触发CTRL + B快捷键)。
答案 1 :(得分:5)
使用this answer,我设法改变了一些代码,我想我得到了你想要的东西?
代码:
jQuery(document).ready(function($) {
$('body').keypress(function(e) {
if(e.which == '40')
$('body').animate({scrollTop: '100px'});
});
});
jQuery.fn.simulateKeyPress = function(character) {
jQuery(this).trigger({
type: 'keypress',
which: character
});
};
setTimeout(function() {
$('body').simulateKeyPress(40);
}, 1000);
答案 2 :(得分:2)
以下是从@Haring10&#39开始的示例:
How to debug EntityMalformedException?
$('body').keydown(function(e) {
e.preventDefault();
e.stopImmediatePropagation();
if(e.which == 40) {
window.scrollBy(0, -100);
} else {
window.scrollBy(0, 100);
}
});
以编程方式触发keydown-keyup-keypress似乎没有滚动的效果。可以自定义上面的示例以添加动画。