Estoy tratando de crear una extensión de Chrome que rastreará el tiempo que un usuario usó un sitio web (es decir, un rastreador de actividad). Mi enfoque es obtener el tiempo cuando la pestaña está activa y obtener el tiempo cuando está inactivo y luego restar, pero puedo ' obtener la pestaña inactiva
//// background.js async function getCurrentTab() { let queryOptions = { active: true, currentWindow: true }; let [tab] = await chrome.tabs.query(queryOptions); return tab; }este es el código que estoy usando para obtener la información de la pestaña actual
esta es mi primera extensión así que...
Usando api chrome.tabs.onActivated
const url = '' const time = 0 chrome.tabs.onActivated.addListener(async (activeInfo) => { const { tabId } = activeInfo; const newUrl = tabId const currentTime = new Date().getTime() if (url && url !== newUrl) { const elapsedTime = currentTime - time; time = new Date().getTime() url = newUrl // 1. if url is null, start timer } else { time = currentTime url = newUrl } }); Si desea obtener url o href usando esta api chrome.tabs.get(tabId, (res) => {} )
Creo que puede usar un mapa para almacenar todas las URL visitadas como claves y el tiempo en que se activaron como valores. Si esto no es lo que está buscando, lo siento, pero estoy seguro de que puede usar esto. Dime si algo no funciona:
let Opened = new Map(); let lastChanged, previousUrl; chrome.tabs.onUpdated.addListener(function (tabid, changeInfo, tab) { var currentUrl = changeInfo.url; if (!currentUrl) return; if (currentUrl !== previousUrl) { if (lastChanged) { const elapsedTime = (new Date().getTime()) - lastChanged; if (!Opened.has(previousUrl)) { Opened.set(previousUrl, elapsedTime); // Set time to the elapsed time if its a new URL } else { Opened.set(previousUrl, Opened.get(currentUrl) + elapsedTime); // Increment the time for this URL } } lastChanged = new Date().getTime(); previousUrl = currentUrl; } });