Created
March 10, 2016 20:30
-
-
Save nathanleclaire/1fad560aab08d00f19e7 to your computer and use it in GitHub Desktop.
chrome extension contextmenus sample
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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); | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Manifest V2 is being phased out.
Your code should either be updated to Manifest V3 or taken down.