Firegestures创建弹出菜单

这篇又是关于Firegestures,因为Firegestures实在太好用了,这次来讨论一下Firegestures弹出菜单创建,这篇文章比较长。

用了Firegestures很久了,没了这个扩展还真不习惯,关闭标签页已经条件反射地划“L”(即下右),而不是把鼠标移上去点关闭按钮。一个和两个方向的手势已给我分配完了,三个方向手势也用得七七八八,四个方向也用了几个,我是参考使用频率来分配。

弹出菜单

不过实用的脚本越来越多,手势好像不够用了,而且记住每个手势对应哪个动作还要时间一段时间适应。三个方向的以上手势鼠标行走距离还是多了点,换方向还要有少许停顿,影响操作的流畅度(划下和划右还是比较顺手的)。

create_firegestures_popup_menu

不要忘了Firegestures还提供弹出菜单功能!可以看看设置窗口里的自带弹出菜单,有四个。而Firegestures是支持自定义脚本的,理所当然能创建自己的弹出菜单,也就是说Firegestures给你提供额外的右键菜单,那就不需要记下每个手势,不需要划那么多个方向,只需要轻划一下,弹出个菜单,然后选择自己所需的功能,很实用吧。

脚本写法

Firegestures的官网有些例子,来看看弹出菜单的脚本写法,很简单

FireGestures.generatePopup(event,
    [
        { label: "菜单显示文字1", oncommand: "命令1;" },
        { label: "菜单显示文字2", oncommand: "命令2;" },
        { label: "菜单显示文字3", oncommand: "命令3;" },
    ]
);

其中“命令”就是你点击后执行的命令,直接写上去就行了,用分号隔开。之前的《AutoPager简明攻略七-鼠标手势》,就是直接把命令写到双引号之间。比如打开书签和历史侧边栏可以这样写,你可以复制下面代码来试一试。

FireGestures.generatePopup(event,
    [
        { label: "显示书签侧边栏", oncommand: "toggleSidebar('viewBookmarksSidebar');" },
        { label: "最小化窗口", oncommand: "window.minimize();" },
        { label: "关闭标签页", oncommand: "gBrowser.removeCurrentTab();" },
    ]
);

但是这样需要自己找出哪些语句执行哪些动作,得看Firefox的开发者文档,很麻烦,也不实用。如果某个动作需要多个语句才能实现的话,可以用分号隔开,然后就是痛苦了,代码混乱难以阅读。当然有个方式是,封装成一个函数,不过依然能让这段脚本变得很长很长。

所以这篇文章的重点是,通过弹出菜单来调用已存在的手势

调用外部手势

经过我看了半天的Firegestures源代码,郁闷阅读和探索过程就不分享了。总算发现了一个方法,写了几个工具函数,再去调用Firegestures内部的函数,方便来调用已存在的手势。这三个工具函数如下

  • FireGestures.API_runFromCommand,按命令调用
  • FireGestures.API_runFromName,按名称调用
  • FireGestures.API_runFromDirection,按手势方向调用。

不要给吓倒,其实很简单的。下面是一个例子,你只需关心菜单怎么写就行了,完整脚本代码在这里

FireGestures.generatePopup(event,
   [
        { label: "按命令调用,显示书签侧边栏", oncommand: "FireGestures.API_runFromCommande('FireGestures:BookmarksSidebar');" },
        { label: "按名称调用,TinyURL 当前网址", oncommand: "FireGestures.API_runFromName('TinyURL 当前网址');" },
        { label: "当手势方向调用,打开历史测边栏", oncommand: "FireGestures.API_runFromDirection('LD');" },
   ]
);

一个一个函数来解释一下

  • FireGestures.API_runFromCommand

  • 这个是按命令来调用

    { label: "按命令调用,显示书签侧边栏", oncommand: "FireGestures.API_runFromCommande('FireGestures:BookmarksSidebar');" },

    注意括号里面用的是单引号,值为“FireGestures:BookmarksSidebar”,这个命令是怎么搞来的呢,但你编辑“显示书签侧边栏”的手势,在编辑窗口就看到了这个命令了。

    create_firegestures_popup_menu_1

    这个函数只对默认自带的手势有用。

  • FireGestures.API_runFromName

  • 这个是按名称调用

    { label: "按名称调用,TinyURL 当前网址", oncommand: "FireGestures.API_runFromName('TinyURL 当前网址');" },

    例子是之前的的《创建TinyURL的Firegestures鼠标手势》,这里的命令就是你自己添加的脚本的名称

    create_firegestures_popup_menu_2

    所以这个函数只对自己添加的手势有用。

  • FireGestures.API_runFromDirection

  • 这个是按手势方向调用

    { label: "当手势方向调用,打开历史测边栏", oncommand: "FireGestures.API_runFromDirection('LD');" },

    这里面的“LD”就是鼠标的方向手势。如果你已经为该动作分配了手势后,你就可以用这个函数来调用,还句话书说你既可以划手势来执行也可以用弹出菜单来执行

    create_firegestures_popup_menu_3

    这个方法对默认和自己添加的动作都有用,前提是分配了手势。

This entry was posted in 浏览器 and tagged . Bookmark the permalink.

2 Responses to Firegestures创建弹出菜单

  1. khfdhgkjdfg says:

    那个发送命令的为什么不能用FireGestures.API_runFromCommand

    回复回复
  2. muzuiget says:

    @khfdhgkjdfg FireGestures.API_runFromCommand 只对预置手势有效。

    回复回复

发表评论

您的电子邮箱不会被公开。 标记为 * 的区域必须填写

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">