ShortcutBinder – 用快捷键点击链接!

46
1 Star2 Stars3 Stars4 Stars5 Stars(快来投票)
Loading...

几个月前,碰到一个用快捷键点击链接的 firefox 插件,它自动为页面上所有的链接添加快捷键,而且不能自定义,这样就没啥实用价值了。前些天,突发奇想,自己写一个能给任意网页的添加快捷键的 GreaseMonkey 脚本。

在动手之前,我用 userscript shortcut 为关键字搜索了一下,找到了这个牛叉叉的 GreaseMonkey 脚本——ShortcutBinder!它使用了 XPath 来选取网页中链接和控件。

嘛是 XPath
XPath 是一门在 XML 文档中查找信息的语言。看懂下面的东西,需要一点网页基础,如果你没有一点网页基础,建议去 w3school 中文版学习下

ShortcutBinder 有啥用呢?比如:

  1. 像在 Gmail 和 Google Reader 里一样,用 J、K 来点击小众的上一篇文章和下一篇文章链接。
  2. 用 S 来定位到小众的搜索框、Google 的搜索框、任意网页的搜索框。
  3. 用 C 来定位到小众的留言栏。
  4. 用 Alt + A 来切换到 Google 的高级搜索页面。

非常适合被 Gmail 惯坏的快捷键爱好者。

安装

你需要 Firefox 浏览器一只,并安装扩展 GreaseMonkey,然后安装脚本 ShortcutBinder

例子 1:用 J、K 来点击小众的上一篇文章和下一篇文章链接:

  1. 在开始之前,设置一下 ShortcutBinder,右击状态栏的 GreaseMonkey 图标,指向“用户脚本命令”,选择“Set shortcut for bind dialog”。

  2. 这时候,当前网页就会出现设置界面,建议把添加快捷键(Add Shortcut)设置为 A,把,管理快捷键(Manage shortcut)设置为 M。设置后需要刷新页面,快捷键才能启用:

  3. 打开小众里有上一篇下一篇链接的文章,比如 EXE Password Protector – 给 EXE 加个密码 [今日免费]
  4. 然后按下快捷键 A,添加快捷键。点击“两个 CSV 小工具”这个链接,XPath to element 就会自动获得链接的 XPath 表达式。

    自动生成的 XPath 路径表达式太过智能了,把最后“[(text()=’ 两个 CSV 小工具’)]”删除。不删除的话,这个路径只能匹配到“两个 CSV 小工具”这篇文章。修改后的路径能匹配到小众单篇文章页面的上一篇文章的链接。下一篇也一样处理。怎么理解这个路径表达式呢?很简单,把它看成系统路径一样。

  5. 在 Shortcut 里输入你想要的快捷键,比如 J(注:截图里是 S,汗。。),当然也可以是组合键。然后点击 Save。
  6. 不用刷新页面,按下 J 试试吧。

例子 2:用 S 来定位到小众的搜索栏。按下 A 添加快捷键,然后点击搜索框,在 Shortcut 里输入 S,保存。

例子 3:用 S 来定位到 Google 的搜索框:

  1. 打开 Google 随便搜索,比如小众软件
  2. 右击网页,选择“查看页面源代码”,在源代码里搜索“小众软件”,搜索到的第一个结果是这样的:<input type=text name=q size=41 maxlength=2048 value=“小众软件” title=“Search”>,我们只需要用到“name=q”。
  3. 按下 A 添加快捷键,然后点击搜索框,获得的 XPath 路径是这样的:
  4. 这样的路径是不通用的。删除[(@value=’小众软件’)]。脚本立刻提醒:“We’ve matched 4 nodes!”,意思是匹配到了 4 个节点。如果这里只匹配到 1 个节点,就可以和例子 1 一样,输入快捷键,保存。
  5. 怎么办呢?用上第二步记录下来的“name=q,把“[(@value=’小众软件’)]”修改为“[(@name=’q’)]”。
  6. 建议把 Include,修改为 http://www.google.*/search?*,这样的地址只会匹配到各个国家域名的 Google 搜索页面,不会匹配到 Google 的其他服务。不修改也没什么问题,只是我搜索英文资料的时候,比较喜欢切换到 Google 英文版
  7. 剩下的步骤略。

比较不足的是管理快捷键的界面,我们按下 M 试试:

所有你定义的快捷键都出现了,不管是在哪个网站定义的。如果只显示当前网站的快捷键,就完美了。另外,Include 一栏,只能填写一个网址。

最后,ShortcutBinder 只能点击链接、输入框、单选按钮。下拉列表框是没办法点击的。

已有 46 条评论, 我要留言

  1. 李二嫂的猪说道:

    眼睛好疼……像 Eson 一样,掩面泪奔离开……

  2. 说道:

    小众风格大变……

  3. 导演博客说道:

    怎么内容页面CSS不显示了..

  4. scavin说道:

    我日,激动。忍不住都说出脏话了。

    这东西太牛逼了。。。。。。。。我能,我能拿回家抱着吗/

  5. scavin说道:

    这东西是人发明的吗

  6. meidog说道:

    如果找到2个结果匹配XPATH,怎么办?

  7. 熊歌说道:

    豆瓣上面那个搜索框有2个结果匹配什么弄?

    • sfufoet说道:

      @熊歌, 建议你再仔细研究下文章的第三个例子。这个例子就可以解决豆瓣的问题。

      生成的是:

      //div[(@id=’maxw’)]/form[(@id=’ssform’)]/div[(@id=’header’)]/div[(@id=’searbar’)]//input[(@class=’j a_search_text’) and (@id=’page_focus’)]

      根据例子 3 修改为

      //div[(@id=’maxw’)]/form[(@id=’ssform’)]/div[(@id=’header’)]/div[(@id=’searbar’)]//input[(@id=’page_focus’)]

  8. xyly说道:

    学学XML咯

  9. David说道:

    又看牛文。

  10. siriuz说道:

    原来只能选上一页和下一页,有没有类似gmail的脚本?用j和k选择上下连接,然后用o打开?

  11. prcgolf说道:

    小众介绍好用的firefox扩展时能否说一下此扩展能否有IE下的版本,毕竟IE还是用的人多。firefox使用起来有难度,懒的用。
    感觉不如THEWorld

  12. zxone说道:

    我还担心它会与输入状态冲突,试了一下,竟然正常!
    一直想有这种功能的插件。另外,不知道有没有方便的修改页面元素的插件,比如把一些网站的“下载”按钮修改到显眼的位置。
    真希望AHK能够对输入状态进行侦测,这样以来大多数窗口下就不需要多按Ctrl、ALt、Win和Shift等功能键了。

    • sfufoet说道:

      @zxone, 如果冲突的话,小众就不会强烈推荐啦。

      你的问题很简单。 GreaseMonkey 就可以搞定。不过, GreaseMonkey 脚本太难写了。建议用傻瓜化可视化的 GreaseMonkey 脚本生成插件:Platypus plugin 来实现(http://platypus.mozdev.org/)

  13. cuthead说道:

    非常好,小众软件如果能天天发表这种文章而不是那些弱智火星文来获取90后的流量,我会天天来支持的。solidot留。

  14. 乐者为王说道:

    非常好的功能,我找到手工操作google的方式

  15. wang316316说道:

    有傲游版的插件就好了

  16. sheng说道:

    超级好用啊,谢谢博主的推荐。用来作为baidu和google的翻页了。

  17. Eureka说道:

    好东西 很方便!!

  18. 卫卡星说道:

    如果网页有多个一样的链接,能不能时间一键全部点击呢!

有不同想法?说说看