Как я могу получить элемент, по которому щелкнули правой кнопкой мыши через контекстное меню Google Chrome? - PullRequest
9 голосов
/ 13 апреля 2011

Я создаю элемент контекстного меню в Google Chrome следующим образом:

chrome.contextMenus.create({
 "title":"My Context Menu Item", 
 "contexts":["editable"], 
 "onclick": onClick
});

Обратный вызов onClick получает два аргумента: объект OnClickInfo и объект табуляции.Похоже, что ни один из объектов не содержит ссылку на элемент DOM, который был нажат правой кнопкой мыши при вызове контекстного меню.У меня есть console.logged оба этих объекта, но я нигде не вижу ссылки на целевой элемент.

Желаемый результат:

  • пользователь щелкает правой кнопкой мыши редактируемый элемент
  • пользователь щелкает по моему пункту контекстного меню
  • в обратном вызове onClick, мой расширенный поиск выполняет поиск родительского элемента формы относительно целевого элемента правой кнопки мыши

На данный момент это не похоже на то, что Chrome предлагает какую-либо ссылку на целевой элемент.Кто-нибудь нашел способ обойти это ограничение?

1 Ответ

8 голосов
/ 14 апреля 2011

Вы должны внедрить скрипт содержимого на каждую страницу, прослушать событие mousedown и записать последний нажатый элемент.Затем, когда вызывается обратный вызов контекстного меню, вы должны sendRequest перейти на вкладку, чтобы получить информацию об этом последнем нажатом элементе.

...