El objetivo es enviar algunos datos desde la página HTML (no una ventana emergente) a la página content.js cuando se activa un clic y luego enviarlo al archivo background.js para realizar alguna función con los datos, pero estoy enfrentando algunos errores para Consíguelo.
índice.html
<input type="text" id='fullname' /> <button onclick="sendData()">Submit</button>Contenido.js
El método chrome.runtime.sendMessage() funciona bien cuando está dentro de document.onLoad() pero tiene un problema al llamarlo dentro de una función normal
function sendData(){ var fullName = document.getElementById('fullname').value; chrome.runtime.sendMessage({ "message": fullName } ,(res)=>console.log(res)) }Fondo.js
chrome.runtime.onMessage.addListener(receiver); function receiver(data, sender, sendResponse) { if (data.message !== undefined) { chrome.pageAction.show(sender.tab.id); sendResponse(`${data.message} is submitted as your fullname`) } }Las extensiones de Chrome no le permiten tener JavaScript en línea ( documentación ).
En su lugar, asigne una identificación a su botón <button id="submitButton">Submit</button> y use addEventListener() para vincular la función sendData() como un evento.
Contenido.js
document.addEventListener('DOMContentLoaded', function() { const button = document.getElementById('submitButton'); button.addEventListener('click', sendData); }); function sendData(){ var fullName = document.getElementById('fullname').value; chrome.runtime.sendMessage({ "message": fullName } ,(res)=>console.log(res)) }