Estoy haciendo una extensión de Safari que usa principalmente javascript. El popover muestra el html que puse dentro, incluido un botón con una identificación, pero no activa una función dentro de mi content.js, que manipula el sitio en el que lo estoy usando.
No puedo encontrar ninguna información sobre esto. Incluso el proyecto de ejemplo que tiene Apple no muestra un ejemplo de esto.
Lo que quiero lograr es poder activar y desactivar la extensión para una pestaña específica, pero eventualmente quiero que interactúe con mi script que está manipulando la página.
ventana emergente.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="popup.css"> </head> <body> <h2>Extension Title</h2> <button id="onOffToggleButton">ON</button> <div id="color-container"> </div> </body> </html>contenido.js
document.getElementById("onOffToggleButton").addEventListener("click", function() { console.log("hi") // does not occur });Descubrí que necesitas mucho más. Primero necesitas un script dentro de la ventana emergente. Aquí está popup.html:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="popup.css"> <script type="module" src="popup.js"></script> </head> <body> <h2>Extension Title</h2> <button id="onOffToggleButton">ON</button> <div id="color-container"> </div> <script src="popup.js"></script> </body> </html>Esto es emergente.js. Tengo una función para obtener la pestaña actual del navegador, que se devuelve cuando hace clic en el botón en popup.html. Envía el comando "prueba" a content.js.
function getActiveTab() { return browser.tabs.query({active: true, currentWindow: true}); } document.getElementById("onOffToggleButton").addEventListener("click", function() { getActiveTab().then((tabs) => { browser.tabs.sendMessage(tabs[0].id, { command: "test", }); }); });content.js recibe el mensaje y lo escribe en la consola:
browser.runtime.onMessage.addListener((message) => { if (message.command === "test") { console.log("hi") } });Intente usar la función de alerta incorporada
alert("what you want")