Google Chrome插件开发-Context Menus

本节主要介绍如何在Google Chrome浏览器web页面上点击右键弹出自定义菜单,即如何使用谷歌Context Menus API接口。上节已经把主要流程介绍了,这节就直接上代码,代码都是官方例子没有实际意义,但是可以起到抛砖引玉的作用,大家根据自己的需要开发出自己想要的功能才是王道。

manifest.json代码如下:

{
"name": "Context Menus Sample",
"description": "Shows some of the features of the Context Menus API",
"version": "0.6",
"permissions": ["contextMenus"],
"background": {
"scripts": ["sample.js"]
},
"manifest_version": 2
}

sample.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.  

// A generic onclick callback function.
function genericOnClick(info, tab) {
  console.log("item " + info.menuItemId + " was clicked");
  console.log("info: " + JSON.stringify(info));
  console.log("tab: " + JSON.stringify(tab));
}  

// Create one test item for each context type.
var contexts = ["page","selection","link","editable","image","video",
                "audio"];
for (var i = 0; i < contexts.length; i++) {
  var context = contexts[i];
  var title = "Test ‘" + context + "‘ menu item";
  var id = chrome.contextMenus.create({"title": title, "contexts":[context],
                                       "onclick": genericOnClick});
  console.log("‘" + context + "‘ item:" + id);
}  

// Create a parent item and two children.
var parent = chrome.contextMenus.create({"title": "Test parent item"});
var child1 = chrome.contextMenus.create(
{"title": "Child 1", "parentId": parent, "onclick": genericOnClick});
var child2 = chrome.contextMenus.create(
  {"title": "Child 2", "parentId": parent, "onclick": genericOnClick});
console.log("parent:" + parent + " child1:" + child1 + " child2:" + child2);  

// Create some radio items.
function radioOnClick(info, tab) {
  console.log("radio item " + info.menuItemId +
              " was clicked (previous checked state was "  +
              info.wasChecked + ")");
}
var radio1 = chrome.contextMenus.create({"title": "Radio 1", "type": "radio",
                                         "onclick":radioOnClick});
var radio2 = chrome.contextMenus.create({"title": "Radio 2", "type": "radio",
                                         "onclick":radioOnClick});
console.log("radio1:" + radio1 + " radio2:" + radio2);  

// Create some checkbox items.
function checkboxOnClick(info, tab) {
  console.log(JSON.stringify(info));
  console.log("checkbox item " + info.menuItemId +
              " was clicked, state is now: " + info.checked +
              "(previous state was " + info.wasChecked + ")");  

}
var checkbox1 = chrome.contextMenus.create(
  {"title": "Checkbox1", "type": "checkbox", "onclick":checkboxOnClick});
var checkbox2 = chrome.contextMenus.create(
  {"title": "Checkbox2", "type": "checkbox", "onclick":checkboxOnClick});
console.log("checkbox1:" + checkbox1 + " checkbox2:" + checkbox2);  

// Intentionally create an invalid item, to show off error checking in the
// create callback.
console.log("About to try creating an invalid item - an error about " +
            "item 999 should show up");
chrome.contextMenus.create({"title": "Oops", "parentId":999}, function() {
  if (chrome.extension.lastError) {
    console.log("Got expected error: " + chrome.extension.lastError.message);
  }
});  

插件加载流程参考:http://blog.csdn.net/anda0109/article/details/50325849

原文地址:https://www.cnblogs.com/h2zZhou/p/9237105.html

时间: 2024-11-05 18:32:10

Google Chrome插件开发-Context Menus的相关文章

google chrome插件开发,自己动手,丰衣足食

因为平时上网都用chrome,但总感觉除了速度快,简洁以外总还有地方满足不了我的需要,然后找插件…后来发现,插件虽然海量但找个称心如意的也不是件容易的事儿,用在找插件的时间都能自己写一个了,于是,今年夏天开始的闲暇时间也写了几个,然后在应用中心断断续续发布了,这些插件原本是给自己用的,但也有几个用户专门找我提出了他们的需求. 从开始的不懂到现在三两下就能玩儿一个,走了点远路,今天在这里写下从开发到发布的简单流程,都是很简单的知识 一个可用的插件至少包括一个manifest.json和一个js文件

Google Chrome插件开发

参考:http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/ 下面我将一步一步教你如何开发一个浏览器插件,这个插件会在浏览器工具栏创建一个图标,点击图标会弹出一个页面. 1.在任意位置创建目录getStarted. 2.在getStarted目录下创建一个文本文件,并将文件名修改为manifest.json,其内容如下: { "manifest_versi

【Chrome】Chrome插件开发(一)插件的简单实现

不同浏览器插件开发比较 Chrome的插件开发起来最简单,总体上看没什么新的技术,开发语言就是javascript,web前端工程师能很快上手. Firefox的插件开发则复杂许多,涉及到环境的搭建和一些WEB以外的技术. IE的插件开发就更复杂了,需要熟悉C++和COM技术,当然还要装微软的Visual Studio. 这里有篇老外写的文章,对比Chrome.Opera和Firefox的插件开发的:http://blog.nparashuram.com/2011/10/writing-brow

Google Chrome浏览器扩展的架构

1) 不可视的background页面 Google Chrome扩展往往包含一个不可见的background页面,Google Chrome扩展的主要业务逻辑都位于此.有两种类型的background 页面,一种是persistent background pages,另一种是event pages.Persistent background pages持续运行,随时可访问.而Event pages是事件驱动运行的,只有在事件发生的时候才可以访问. Persistent background

Google Chrome Plus&mdash;&mdash;绿色便携多功能谷歌浏览器

一直就很喜欢用谷歌和火狐,不过浏览器默认功能是很少的,界面也不怎么好看,所以这个时候就需要浏览器三大神器:扩展,脚本,样式.Google Chrome Plus,我自己这么叫他,其实就是一个绿色便携多功能谷歌浏览器,是我的第一个定制版,是用shuax的补丁制作而成的,大家可以很方便的放进U盘使用,下面就详细的介绍一下我添加的东西. (不要被这么多的内容吓着,我只是写的比较详细罢了,并不复杂,看下去--) 分别从扩展,脚本,样式三个方面来介绍: [扩展]: 谷歌浏览器是一个多线程浏览器,每个扩展,

自定义滚动条样式 --- 适用于webkit浏览器 Google Chrome 和 Opera

适用于Google Chrome 和 Opera浏览器的滚动条自定义样式 ::-webkit-scrollbar //滚动条整体部分,其中的属性有width,height,background,border(就和一个块级元素一样)等.(位置1) ::-webkit-scrollbar-button //滚动条两端的按钮.可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果.(位置2) ::-webkit-scrollbar-track  // 外层轨道.可以用displ

How to install 64-bit Google Chrome 28+ on 64-bit RHEL/CentOS 6 or 7

How to install 64-bit Google Chrome 28+ on 64-bit RHEL/CentOS 6 or 7 The problem Google developers seem to think that Red Hat Enterprise Linux 6 - aka RHEL 6 - and its free equivalents (e.g. CentOS 6 and Scientific Linux 6) are no longer worth suppor

Crash Google Chrome with one tiny URL

http://www.theregister.co.uk/2015/09/20/chrome_url_crash/ Crash Google Chrome with one tiny URL: We cram a probe in this bug How clicking on or even rolling your mouse over it will knacker browser Twitter 317 Facebook 94 G+ linkedin 67 20 Sep 2015 at

Google Chrome 39.0.2171.71 正式发布

Google Chrome,又称Google浏览器,是一个由Google(谷歌)公司开发的网页浏览器.该浏览器是基于其他开源软件所撰写,包括WebKit,目标是提升稳定性.速度和安全性,并创造出简单且有效率的界面. Chrome 39 新版特性: • 原生支持Mac 64位: • 一系列全新的扩展应用程序以及扩展API: • 大量内核稳定性以及性能上的优化: • 除此之外,该版本Chrome 39还包含了42个安全修补程序. 64位Chrome能更好地利用当今的硬件,并且对速度.安全性.稳定性进