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

#google-chrome #contextmenu #element

#google-chrome #contextmenu #элемент

Вопрос:

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

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

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

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

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

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

Ответ №1:

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

Комментарии:

1. Войдите в систему с помощью console.log? Запрос отправки? Вы имеете в виду вызов AJAX?

2. Софиворус, я думаю, что регистрировать Scott означает сохранять в памяти, например, в переменной, ссылку на элемент или какой-либо другой вид ссылки, чтобы иметь возможность извлечь элемент позже.