Я пытаюсь создать надстройку для Firefox, которая позволяет мне вводить пароль с сервера на основе REST в поле ввода.
Для этого я добавил контекстные меню с помощью надстройки Firefox.
Прослушиватель этих контекстных меню реализован следующим образом:
add_listener(menu_id, listener) {
const click_listener = function(info, tab) {
if ('' + info.menuItemId == menu_id + '') {
console.debug(info.targetElementId);
listener(browser.menus.getTargetElement(info.targetElementId));
}
};
this.listeners.push(click_listener);
browser.contextMenus.onClicked.addListener(click_listener);
}
for (const pwDataEntry of pwDataSet.entries) {
const entryId = menu_service.create_sub_menu(null, pwDataEntry.key, setId);
menu_service.add_listener(entryId, element => {
console.debug(element);
element.value = pwDataEntry.content;
});
}
Я работаю над документация от Firefox для создания меню и документация для ClickData (= info) . Здесь документация гласит:
targetElementI integer. Идентификатор элемента, если таковой имеется, над которым было создано контекстное меню. Используйте menus.getTargetElement () в скрипте содержимого, чтобы найти элемент. Обратите внимание, что это не атрибут id элемента страницы.
Как вы можете видеть, я реализовал извлечение элемента именно так, как задокументировано. Дело в том, что Firefox говорит мне, что он не нашел элемент:
3056573 background.js:32:25
null background.js:120:29
element is null background.js:121
background.js:32:25 -> console.debug(info.targetElementId);
background.js:120:29 -> console.debug(element);
background.js:121 -> element.value = pwDataEntry.content;
Если вам нужна дополнительная информация о коде, я загрузил весь фон. js здесь
Надеюсь, вы знаете, почему это не сработало, как описано в документации, и где я ошибся ...
Спасибо за вашу помощь и заранее:)