Estoy escribiendo una extensión que tiene un botón con diferentes funciones. Así que estoy tratando de descubrir cómo recuperar la cantidad de pestañas que están abiertas y en mi contenido.js Quiero ejecutar cosas diferentes al hacer clic en el botón dependiendo de cuántas pestañas estén abiertas.
Estuve probando diferentes enfoques con chrome.tabs.query en background.js y enviándolo de regreso, pero tuve problemas ya que es asíncrono.
contenido.js
if (tabcount < 2) { $(function () { $("#Back").on('click', function (e) { e.preventDefault(); window.history.back(); }); }); console.log("one tab"); } if (tabcount > 1) { $(function () { $("#Back").on('click', function (e) { e.preventDefault(); window.location.href = 'exit'; }); }); console.log("more tabs"); }Editar: código de mensaje agregado
Código de mensaje de fondo
function sendMessageToTab(tabId, message) { return new Promise((resolve) => { chrome.tabs.sendMessage(tabId, message, resolve) }) } chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) { if (changeInfo.status == 'complete') { chrome.tabs.query({ windowType: 'normal' }, function (tabs) { const msg = tabs.length; sendMessageToTab(tabs[0].id, msg) }); } return true; });recibir contenido
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { if (request > 1) {console.log('more than 1 tab open'); } });