工程下载:http://files.cnblogs.com/JiangHuakey/contextDemo.zip
要使用上下文菜单首先要在manifest.json文件中设置permissions字段为["contextMenus"]
{
"name": "Context Menus Sample",
"description": "Shows some of the features of the Context Menus API",
"version": "0.5",
"permissions": ["contextMenus"],
"background_page": "background.html"
}
下面是js的代码说明:
// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//翻译及解说:江湖一键客
//日期:2011/9/1
function genericOnClick(info, tab) {
alert("菜单ID为 " + info.menuItemId + "的菜单已被点击");
alert("元素信息: " + JSON.stringify(info));
alert("标签信息: " + JSON.stringify(tab));
}
//注释1:
//下面的数组是表示在什么样类型的元素(上下文)上点击才显示相应的菜单项,
//比如"link"类型则是当用户点击了超链接的时候才显示的菜单项。
//如果没有设置则无论在什么元素上面点击都会显示所创建的菜单项
var contexts = ["page","selection","link","editable","image","video",
"audio"];
for (var i = 0; i < contexts.length; i++) {
var context = contexts[i];
var title = "用户点击的是 '" + context + "' 类型元素时所展现的菜单项";
//chrome.contextMenus.create方法说明:
//"title":所标示的参数即是菜单项的名称,
//"contexts":所表示的参数是菜单项在怎么样的上下文中显示,如注释1所示。
//"onclick": 事件标示
var id = chrome.contextMenus.create({"title": title, "contexts":[context],
"onclick": genericOnClick});
}
//创建一个父菜单项和两个子菜单项
//chrome.contextMenus.create创建菜单后返回标识这个菜单的一个ID,在创建子菜单时要用到,请参见下面说明。
var parent = chrome.contextMenus.create({"title": "测试父菜单"});
//和创建父菜单项一样的方法,只是多了一个"parentId"参数。
var child1 = chrome.contextMenus.create(
{"title": "子菜单 1", "parentId": parent, "onclick": genericOnClick});
var child2 = chrome.contextMenus.create(
{"title": "子菜单 2", "parentId": parent, "onclick": genericOnClick});
console.log("parent:" + parent + " child1:" + child1 + " child2:" + child2);
function radioOnClick(info, tab) {
alert("单选菜单项 ID=" + info.menuItemId +
"之前的状态:" +
info.wasChecked + ")");
}
//创建一些单选(radio)菜单项,需要注意的是"type"所标示的参数为radio,如果忽略此参数则创建普通的菜单项
var radio1 = chrome.contextMenus.create({"title": "单选1(选中我之后前面会有一个小圆点)", "type": "radio",
"onclick":radioOnClick});
var radio2 = chrome.contextMenus.create({"title": "单选2(选中我之后前面会有一个小圆点)", "type": "radio",
"onclick":radioOnClick});
function checkboxOnClick(info, tab) {
alert(JSON.stringify(info));
alert("checkbox 菜单项ID: " + info.menuItemId +
" 现在的状态: " + info.checked +
"(之前的状态 " + info.wasChecked + ")");
}
//创建一些复选(checkbox)菜单项,需要注意的是"type"所标示的参数为checkbox,如果忽略此参数则创建普通的菜单项
var checkbox1 = chrome.contextMenus.create(
{"title": "Checkbox1", "type": "checkbox", "onclick":checkboxOnClick});
var checkbox2 = chrome.contextMenus.create(
{"title": "Checkbox2", "type": "checkbox", "onclick":checkboxOnClick});