Estoy tratando de crear una extensión para poder mostrar la cantidad de etiquetas de entrada ocultas ( <input type="hidden"> ) como un texto de insignia en Firefox (como la imagen ==>
)
Pero tengo dos desafíos:
1- Para obtener el recuento <input type="hidden"> , la página debe estar completamente cargada
2- El texto de la insignia solo se puede configurar en segundo plano y no puedo enviarle la cantidad de entradas
¿Cómo muestro el número <input type="hidden"> como texto de insignia en Firefox cuando se carga un sitio?
manifiesto.js
{ "browser_specific_settings": { "gecko": { "strict_min_version": "58.0a1" } }, "background": { "scripts": ["background.js"] }, "browser_action": { "browser_style": true, "default_title": "test", "default_popup": "test.html" }, "description": "test", "homepage_url": "https://github.com/", "manifest_version": 2, "name": "test", "permissions": [ "tabs" ], "version": "1.0", "content_scripts": [ { "matches": ["<all_urls>"], "js": ["test.js"] } ] }prueba.js
let HiddenInputCount = 0; var inputs, index; inputs = document.getElementsByTagName('input'); for (index = 0; index < inputs.length; ++index) { // deal with inputs[index] element. if(inputs[index].type == "hidden") { HiddenInputCount++; } }fondo.js
function updateCount() { var HiddenInputCount = 0; //This variable must be set automatically!!!! browser.browserAction.setBadgeText({text: HiddenInputCount.toString()}); if (HiddenInputCount != 0) { browser.browserAction.setBadgeBackgroundColor({'color': 'green'}); } else { browser.browserAction.setBadgeBackgroundColor({'color': 'red'}); } } updateCount();Está en el camino correcto, todo lo que necesita hacer ahora es aprovechar runtime.sendMessage .
Primero agregue a su secuencia de comandos de contenido, test.js , un mensaje:
chrome.runtime.sendMessage(hiddenInputCount) Luego configure un oyente en su archivo background.js :
chrome.runtime.onMessage.addListener((request, sender, callback) => { // `request` in this example would be your hidden input value chrome.browserAction.setBadgeText({text: request.toString(), tabId: sender.tab.id}); // you would probably update this to call `updateCount` }); Tenga en cuenta que también estoy configurando el valor tabId . Esto es para que los recuentos de insignias sean precisos para cada página.