Bueno. Así que soy muy, muy nuevo en JavaScript (como en: apenas conocía nada antes, y recién comencé a aprender hoy para poder trabajar en este proyecto). Tengo un conocimiento bastante bueno de Java, pero eso no es muy útil con los aspectos más funcionales de JS.
Actualmente estoy trabajando en algunas secuencias de comandos para una extensión de Firefox, específicamente la parte del menú contextual. Estoy tratando de hacer una función anónima (creo que así se llama; corríjame si me equivoco), de modo que si la pestaña en la que se hizo clic con el botón derecho se encuentra en una matriz en localStorage, entonces esta función devuelve verdadero y establece la variable en verdadero, por lo tanto, hacer que el elemento del menú contextual tenga una marca al lado.
Mi problema proviene de cómo ...onClicked.addListener()
devuelve un mensaje
Aquí está la contextMenus.create()
llamada:
browser.contextMenus.create({
id: "idPlaceholder",
type: "checkbox",
title: "titlePlaceholder",
contexts: [
"page",
"link",
"tab"
],
checked: checkedState,
}, onCreated);
Y esto es lo que tengo hasta ahora para el niño problemático, quiero decir, la checkedState
declaración de la variable:
var checkedState = () => {
if (JSON.parse(localStorage.getItem('tabs')
.includes(browser.contextMenus.onClicked.addListener(function (info, tab) {
//somehow return "info.pageUrl" to.includes() method
})))) {
}
};
Es probable que haya otra forma de hacer esto, simplemente parece que no puedo encontrarla buscando en línea. Entonces, me dirijo a ti, Internet.
Si necesita más información sobre lo que estoy tratando de hacer, hágamelo saber. Traté de no hacerlo demasiado largo.
Solución del problema
Resolví el problema con la ayuda de wOxxOm.
browser.contextMenus.onShown.addListener(function (info, tab) {
if (JSON.parse(localStorage.getItem('tabs')).includes(info.pageUrl)) {
browser.contextMenus.update("idPlaceholder", {
checked: true,
});
}
browser.contextMenus.refresh();
})
No hay comentarios:
Publicar un comentario