阅读:8638回复:4
低速自动滚屏的greasemonkey脚本
2006.8.24更新
看了Triton同学的脚本,学会了处理键盘消息。这次更新就是增加了键盘控制的功能,在自动滚屏的状态下按"下"可以增加滚屏速度,按"上"是降低速度。 下面的代码加了中文注释,注意不要直接用在原版greasemonkey上。想偷懒的直接下载附件里面的,没有中文 2006.6.1 看电子书时希望能够自动滚屏,但是单击中键那个自动滚屏速度太快,就写了一个脚本实现这个功能。 把下面代码保存在一个文本当中,然后改名为autoscroll.user.js,用FF打开、安装。在运行脚本的页面,单击左键就开始滚动,再点击一次就停止。 在脚本里我添加了自己的电子书路径,需要在别的路径运行脚本可以直接修改@include那一行,或者在greasemonkey里面也可以设置。 // ==UserScript== // @name autoscroll // @namespace http://diveintomark.org/projects/greasemonkey/ // @description autoscroll page // @include file:///E:/Nalch's/EBook/* // ==/UserScript== window.isScroll = false; // 如果在about:config里面读取滚动速度失败则新建一个值 if (GM_getValue('scrollrate', 0) <= 0) { GM_setValue('scrollrate', 100); } // 响应鼠标点击 document.addEventListener('click', function(event) { if (window.isScroll == false){ window.intervalID = window.setInterval("window.scrollBy(0, 1)", GM_getValue('scrollrate', 100)); window.isScroll = true; } else{ window.clearInterval(window.intervalID); window.isScroll = false; } event.stopPropagation(); event.preventDefault(); }, true); // 响应键盘按键 document.addEventListener("keydown", adjustspeed,true); function adjustspeed(event) { if (window.isScroll == true) { if (event.keyCode == 40) // "下"的键码是40 { var rate = GM_getValue('scrollrate', 100); if (rate > 15) { window.clearInterval(window.intervalID); var rat = rate - 10; // 每次按"下"把scrollrate减少10,加速 GM_setValue('scrollrate', rat); window.intervalID = window.setInterval("window.scrollBy(0, 1)", GM_getValue('scrollrate', 100)); // alert(GM_getValue('scrollrate', 100)); } } if (event.keyCode == 38) // "上"的键码是38 { window.clearInterval(window.intervalID); var rate = GM_getValue('scrollrate', 100); var rat = rate + 25; // 每次按"上"把scrollrate增加25,减速 GM_setValue('scrollrate', rat); window.intervalID = window.setInterval("window.scrollBy(0, 1)", GM_getValue('scrollrate', 100)); // alert(GM_getValue('scrollrate', 100)); } } } 原本希望能够通过键盘调节速度,还没找到办法;目前只能通过修改about:config中下面这个键值改变速度。注意滚动速度跟这项值成反比 greasemonkey.scriptvals.http://diveintomark.org/projects/greasemonkey//autoscroll.scrollrate 目前还有一个bug没解决:如果将速度那项重置为空,将造成脚本无法正确运行。 下面说说关于写JS的一些感想,想学编脚本的可以看看: 学过一点其他编程语言的话,JS的语法肯定不成问题,不行的话看看这里的JS语法规范。开始编写脚本,我觉得最有用的资料就是wiki里面的深入Greasemonkey和官方文档Gecko DOM Reference,前者是一些编写技巧,后者是Gecko支持的函数之类的。基本上把"深入GM"的前三章看完就可以参考DOM文档开始照猫画虎了 ![]() 这个是我写的第一个脚本,有什么不顺眼的大家多多指教啊 ![]() |
|
|
1楼#
发布于:2006-06-01 21:50
不错。。谢谢
|
|
2楼#
发布于:2006-06-01 21:50
很少看电子书籍,不过这个功能看起来很不错哦。
|
|
|
3楼#
发布于:2006-06-01 21:50
更新啦 更新啦
![]() |
|
|
4楼#
发布于:2006-06-01 21:50
顶一下!
|
|
|