Como recuperar o elemento onde um contextmenu foi executado

Estou tentando escrever uma extensão do Google Chrome onde uso um menu de contexto. Este menu de contexto está disponível apenas em elementos editáveis ​​(textos de input, por exemplo). Quando o menu de contexto é clicado e executado, gostaria de recuperar na function de retorno de chamada o elemento (o texto de input) no qual o menu de contexto foi executado para atualizar o valor associado a esse texto de input.

Aqui está o esqueleto da minha extensão:

function mycallback(info, tab) { // missing part that refers to the question: // how to retrieve elt which is assumed to be // the element on which the contextMenu has been executed ? elt.value = "my new value" } var id = chrome.contextMenus.create({ "title": "Click me", "contexts": ["editable"], "onclick": mycallback }); 

Os parâmetros associados à function mycallback não contêm informações úteis para recuperar o elemento clicado à direita. Parece que este é um problema conhecido ( http://code.google.com/p/chromium/issues/detail?id=39507 ), mas não há progresso desde vários meses. Alguém conhece uma solução alternativa: sem jquery e / ou com jquery?

Você pode injetar o script de conteúdo com o ouvinte de events mousedown e o elemento de armazenamento que foi clicado:

content script.js

 //content script var clickedEl = null; document.addEventListener("mousedown", function(event){ //right click if(event.button == 2) { clickedEl = event.target; } }, true); chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { if(request == "getClickedEl") { sendResponse({value: clickedEl.value}); } }); 

background.js

 //background function mycallback(info, tab) { chrome.tabs.sendMessage(tab.id, "getClickedEl", function(clickedEl) { elt.value = clickedEl.value; }); }