我在试着找到一种模拟按键的方法。
例如,当功能启动时,应该按下“向下箭头”键,因此应该稍微滚动网页。
我只对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来实现它。
发布于 2016-02-07 03:59:56
正如@rfsbsb指出的那样:Jquery script for simulated key press down not running keyboard shortcut
如果你试图触发某个浏览器或系统范围的键盘快捷键,那么这是个死胡同--出于安全原因,这是不可能的。如果可能的话,你会在互联网上到处都有页面,这些页面甚至不需要询问就会自动添加到你的书签中(通过使用Javascript触发CTRL+B快捷方式)。
发布于 2016-02-04 18:03:04
使用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);
发布于 2016-02-11 04:14:27
下面是一个从@Haring10的示例开始的示例:
https://jsfiddle.net/po33vfb4/4/
$('body').keydown(function(e) {
e.preventDefault();
e.stopImmediatePropagation();
if(e.which == 40) {
window.scrollBy(0, -100);
} else {
window.scrollBy(0, 100);
}
});
按程序触发keydown-keyup-keypress似乎没有滚动的效果。上面的示例可以进行自定义以添加动画。
https://stackoverflow.com/questions/35143695
复制相似问题