目的:
用键盘替代鼠标,做一个安静刷知乎的美男(女)子!
功能:
功能 | 按键 | 说明 |
直接定位到搜索框 | q | |
打开 首页 | w | |
打开 话题 | e | |
打开 发现 | r | |
打开 消息 | m | |
打开 个人主页 | u | |
打开 我的草稿 | c | |
打开 我的收藏 | s | |
打开 关注的问题 | g | |
打开 邀请我回答的问题 | y | |
打开当前可见范围内的第一个问题 | 回车 | 仅针对<首页>下的<最新动态> |
自动加载 更多 | 空格或者↓ | 仅针对页面加载方式为滚动加载时 |
上一页or下一页 | ← or → | 仅针对页面加载方式为翻页加载 |
忘记这些快捷键时,直接敲击 h 键,会弹出帮助信息。 |
实现代码
只介绍关键的两个:
1)自动加载更多
说明:当刷最新动态时,在不断滚动的过程中,底部会出现‘更多’按钮,每次都需要用鼠标点击一下
思路:当每次滚动至底部时,自动触发‘更多’按钮的点击事件。
实现代码:
if(e.keyCode==40||e.keyCode==32){
//下箭头 || 空格
var scrollTop = $(window).scrollTop();
var scrollHeight = $(document).height();
var windowHeight = $(window).height();
if(scrollTop + windowHeight == scrollHeight){
document.getElementById('zh-load-more').click();
}
}
2)打开当前可见范围内的第一个问题
说明:刷最新动态时,看到感兴趣的问题,每次都需要手动点击一下,能不能直接敲击回车,一键打开这个问题呢?答案是肯定的。
思路:通过分析html源码,得知每个问题都是一个固定高度的div。所以可以通过得到当前滚动条的Y坐标,除以div的高度,就可以得到目标。
实现代码:
if(e.keyCode==13) {
//回车:直接打开最接近顶部的那条问题
//每条问题的height==219
var y= GetPageScroll().Y; //滚动条的位置
var index =parseInt(parseInt(y)/220); //当前的div
var title= $('#js-home-feed-list div.feed-item').eq(index).find('h2').html();
var a_href = $('#js-home-feed-list div.feed-item').eq(index).find('h2').find('a').attr('href');
window.open('https://www.zhihu.com'+a_href);
}
function GetPageScroll()
{
var x, y;
if(window.pageYOffset){
// all except IE
y = window.pageYOffset;
x = window.pageXOffset;
}
else if(document.documentElement && document.documentElement.scrollTop){
// IE 6 Strict
y = document.documentElement.scrollTop;
x = document.documentElement.scrollLeft;
}
else if(document.body) {
// all other IE
y = document.body.scrollTop;
x = document.body.scrollLeft;
}
return {X:x, Y:y};
}
完整代码:=请点击我=
V1.0:只是简单实现了上一页、下一页功能,详情请点击我!