#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 означает сохранять в памяти, например, в переменной, ссылку на элемент или какой-либо другой вид ссылки, чтобы иметь возможность извлечь элемент позже.