Context菜单用于在Chrome的右键菜单中增加自己的菜单项。

您可以选择针对不同类型的对象(如图片,链接,页面)增加右键菜单项。

您可以根据需要添加多个右键菜单项。一个扩展里添加的多个右键菜单项会被Chrome自动组合放到对应扩展名称的二级菜单里。

右键菜单可以出现在任意文档(或文档中的框架)中,甚至是本地文件(如file://或者Chrome://)中。若想控制右键菜单在不同文档中的显示,可以在调用create()和update()时指定documentUrlPatterns。

版本说明: 低于Chrome 14的版本,右键菜单只能用于http:// 或者 https:// 类型的文档。

清单

要使用contentMenus API,您必须在清单中声明“contentMenus”权限。同时,您应该指定一个16x16的图标用作右键菜单的标识。例如:

{
"name": "My extension",
...
"permissions": [
"contextMenus"
],
"icons": {
"16": "icon-bitty.png",
"48": "icon-small.png",
"128": "icon-large.png"
},
...
}

范例

您可以在代码例子页面找到使用contentMenus API的简单范例。

API 参考: Chrome.contextMenus

方法

create

integer Chrome.contextMenus.create(object createProperties, function callback)

创建一个新的右键菜单项。注意:如果在创建的过程中出现错误,会在回调函数触发后才能捕获到,错误详细信息保存在Chrome.extension.lastError中。

参数

createProperties ( object )

type ( optional enumerated string ["normal", "checkbox", "radio", "separator"] )右键菜单项的类型。默认为“normal”。
title ( optional string )右键菜单项的显示文字;除非为“separator”类型,否则此参数是必须的。如果类型为“selection”,您可以在字符串中使用%s显示选定的文本。例如,如果参数的值为 "Translate '%s' to Pig Latin",而用户还选中了文本“cool”,那么显示在菜单中的将会是 "Translate 'cool' to Pig Latin"。
checked ( optional boolean )Checkbox或者radio的初始状态:true代表选中,false代表未选中。在给定的radio中只能有一个处于选中状态。
contexts ( optional array of string ["all", "page", "frame", "selection", "link", "editable", "image", "video", "audio"] )右键菜单项将会在这个列表指定的上下文类型中显示。默认为“page”。
onclick ( optional function )当菜单项被点击时触发的函数。

参数
info OnClickData )右键菜单项被点击时相关的上下文信息。
tab Tab )右键菜单项被点击时,当前标签的详细信息。
parentId ( optional integer )右键菜单项的父菜单项ID。指定父菜单项将会使此菜单项成为父菜单项的子菜单。
documentUrlPatterns ( optional array of string )这使得右键菜单只在匹配此模式的url页面上生效(这个对框架也适用)。详细的匹配格式见:模式匹配页面
targetUrlPatterns ( optional array of string )类似于documentUrlPatterns,但是您可以针对img/audio/video标签的src属性和anchor标签的href做过滤。
enabled ( optional boolean )启用或者禁用此菜单项,启用为true,禁用为false。默认为true。
callback ( optional function )在创建完菜单项后触发。如果创建过程中有错误产生,其详细信息在Chrome.extension.lastError中。

返回

( integer )新创建右键菜单项的ID。

回调

如果需要指定回调函数,则回调函数格式如下:

function() {...};

remove

Chrome.contextMenus.remove(integer menuItemId, function callback)

删除一个右键菜单。

参数

menuItemId ( integer )待删除的右键菜单项的ID
callback ( optional function )当右键菜单项被删除后触发。

回调

如果需要指定回调函数,则回调函数格式如下:

function() {...};

removeAll

Chrome.contextMenus.removeAll(function callback)

删除此扩展添加的所有右键菜单项。

参数

callback ( optional function )删除完成后触发。

回调

如果需要指定回调函数,则回调函数格式如下:

function() {...};

update

Chrome.contextMenus.update(integer id, object updateProperties, function callback)

更新已创建的右键菜单项。

参数

id ( integer )待更新的右键菜单项的ID.
updateProperties ( object )待更新的属性。与创建右键菜单项时的属性参数一样。

type ( optional enumerated string ["normal", "checkbox", "radio", "separator"] )
title ( optional string )
checked ( optional boolean )
contexts ( optional array of string ["all", "page", "frame", "selection", "link", "editable", "image", "video", "audio"] )
onclick ( optional function )
parentId ( optional integer )注意:不能将右键菜单项设置成自己子菜单的子菜单。
documentUrlPatterns ( optional array of string )
targetUrlPatterns ( optional array of string )
enabled ( optional boolean )
callback ( optional function )右键菜单项更新完成后触发。

回调

如果需要指定回调函数,则回调函数格式如下:

function() {...};

类型

OnClickData

( object )当右键菜单项被点击时的信息。

menuItemId ( integer )被点击的右键菜单项的ID。
parentMenuItemId ( optional integer )被点击的右键菜单项的父菜单(如果存在)ID。
mediaType ( optional string )点击激活此右键菜单项时,被点击的元素的类型,如:'image', 'video'或者 'audio'。
linkUrl ( optional string )链接的url(如果被点击的元素是链接)。
srcUrl ( optional string )如果被点击元素有 'src' 属性。
pageUrl ( string )点击所在页面的URL。
frameUrl ( optional string )框架元素的URL(如果点击的元素是一个框架)。
selectionText ( optional string )如果点击时选择了文本,则为选中的文本内容。
editable ( string )被点击的元素是否可编辑,比如文本输入框就是可编辑的。

Context Menus的更多相关文章

  1. Google Chrome插件开发-Context Menus

    本节主要介绍如何在Google Chrome浏览器web页面上点击右键弹出自定义菜单,即如何使用谷歌Context Menus API接口.上节已经把主要流程介绍了,这节就直接上代码,代码都是官方例子 ...

  2. SAP 实例 3 Context Menus

    REPORT demo_dynpro_context_menu. DATA: field1 TYPE i VALUE 10, field2 TYPE p DECIMALS 4. DATA: prog ...

  3. [转] How to change font settings for all UI elements (toolbar and context menus, property editors, etc.)

    https://www.devexpress.com/Support/Center/Question/Details/S35762

  4. Context.js 右键菜单

    ContextJS is a lightweight solution for contextual menus. Currently, there are two versions. The fir ...

  5. [翻译].NET Shell Extensions - Shell Context Menus---.net 外壳扩展-右键菜单

    我自己的前言说明: 本文原作者为    Dave Kerr,原文链接为.NET Shell Extensions - Shell Context Menus:,我是在为了完成最新需求的时候查询资料的时 ...

  6. wxpython Menus and toolbars

    Menus and toolbars A common part in a GUI application is a menubar. A menubar consists of objects ca ...

  7. 2000条你应知的WPF小姿势 基础篇<69-73 WPF Freeze机制和Template>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000ThingsYou Should Know About C# 和 2,00 ...

  8. Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  9. 将nuget与VS直接集成,实现一键上传等功能

    nuget是一个非常方便的包管理工具,很多团队为了开发的方便也建立了自己的包源网站(nuget.server),本篇文章是笔者在配置nuget上面的一点小体,其最终目标是要达到能够在VS里一键打包上传 ...

随机推荐

  1. php的设计模式

    1.单一职责原则 单一职责原则(Single Responsibility Principle) 含义:1.避免相同的职责分散到不同的类中,2.避免一个类承担太多的职责: srp的好处: 减少类之间的 ...

  2. three.js、webGL、canvas区别于关联

    canvas是html5新定义的一个标签,用于做图形容器 webgl要依赖canvas运行. three.js是以webgl为基础的库,封装了一些3D渲染需求中重要的工具方法与渲染循环.

  3. netcore 配置文件使用

    一直在记录整理接口调用,但是最近发现关于项目在vs中本地启动也有许多方便的地方. 首先由于使用的是Java的Eureka和网关来做的服务基础, 然后服务就涉及到注册一说, 问题是,如果appsetti ...

  4. python版本管理(python环境隔离)

    这将是一篇比较短的文章. 我发文向来注重文章质量,营养不够的宁可不发,但是我相信很多人需要这篇文章. 之所以要去搞清楚这个问题,是我在把 vscode 的 inspector 设置为 pipenv 生 ...

  5. 派(Dispatch)

    单派与多派 (Single Dispatch and Multi Dispatch) "检查一个数据项的类型,并据此去调用某个适当的过程称为基于类型的分派". 上面是来自<计 ...

  6. CodeForces 734E Anton and Tree

    $dfs$缩点,树形$dp$. 首先将连通块缩点,缩点后形成一个黑白节点相间的树.接下来的任务就是寻找一个$root$,使这棵树以$root$为根,树的高度是最小的(也就是一层一层染色).树形$dp$ ...

  7. 洛谷——P2095 营养膳食

    题目描述 Mr.L正在完成自己的增肥计划. 为了增肥,Mr.L希望吃到更多的脂肪.然而也不能只吃高脂肪食品,那样的话就会导致缺少其他营养.Mr.L通过研究发现:真正的营养膳食规定某类食品不宜一次性吃超 ...

  8. Linux命令之locate

    locate [选项] [pattern] 在mlocate数据库中搜索条目.配合数据库缓存快速查看文件相关位置. locate命令和find -name功能差不多,但是比find搜索要快.因为fin ...

  9. NOIP 2006 提高组 t1 能量项链

    题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...

  10. 【推导】Codeforces Round #364 (Div. 2) D. As Fast As Possible

    一种方法是二分总时间,复杂度O(nlogn). 另外我们可以证明,当所有人同时到达终点的时候,是最优的,因为没有人的时间“浪费”了. 我们又发现,每个人的运动过程总是两段,要么是走路,要么是坐车.于是 ...