Is that possible calling content script method by context menu item in Chrome extension? Is that possible calling content script method by context menu item in Chrome extension? google-chrome google-chrome

Is that possible calling content script method by context menu item in Chrome extension?


You can refer to following code as a reference, where upon click of a context menu a function in content script is invoked.

Sample Demonstration

manifest.json

{    "name": "Content to Context menu",    "description": "http://stackoverflow.com/questions/14452777/is-that-possible-calling-content-script-method-by-context-menu-item-in-chrome-ex",    "version": "1",    "manifest_version": 2,    "background": {        "scripts": [            "background.js"        ]    },    "content_scripts": [        {            "matches": [                "<all_urls>"            ],            "js": [                "myscript.js"            ]        }    ],    "permissions": [        "contextMenus"    ]}

background.js

function genericOnClick(info, tab) {    console.log("item " + info.menuItemId + " was clicked");    console.log("info: " + JSON.stringify(info));    console.log("tab: " + JSON.stringify(tab));    //Add all you functional Logic here    chrome.tabs.query({        "active": true,        "currentWindow": true    }, function (tabs) {        chrome.tabs.sendMessage(tabs[0].id, {            "functiontoInvoke": "showInfo"        });    });}// 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);}

myscript.js

var showInfo = function () {    console.log("Show Info is invoked");}var showAnotherInfo = function () {    console.log("Show Another Info");}chrome.extension.onMessage.addListener(function (message, sender, callback) {    if (message.functiontoInvoke == "showInfo") {        showInfo();    }    if (message.functiontoInvoke == "showAnotherInfo") {        showAnotherInfo();    }});

References