tengo un problema porque no puedo obtener element.data. Siempre está indefinido, cuando trato de usarlo en extensión, pero cuando pego el mismo código en la consola en youtube (modo desarrollador) funciona. En la versión 2 del manifiesto, inyecto este código en el script de contenido, pero en la versión 3 es imposible.
Primero: console.log(el) => funciona Segundo: console.log(el.data) => indefinido
Manifiesto versión 3 service_worker
function injectFc() { document.querySelectorAll('yt-live-chat-text-message-renderer:not([profile-link])').forEach(el => { console.log(el) console.log(el.data) }) } setInterval(() => { let queryOptions = { active: true, currentWindow: true }; chrome.tabs.query(queryOptions, (tb) => { var actTid = tb[0] chrome.scripting.executeScript( { target: {tabId: actTid.id, allFrames: true}, func: injectFc, }, () => { console.log(123); }; }); }, 20000);En el manifiesto de extensión de Chrome v3, todavía usa el script de contenido. El script de contenido le permite configurarlo en un dominio específico, como www.youtube.com . Por favor, compruebe que está utilizando las coincidencias correctas.
manifiesto.json
{ "name": "Inject Code", "action": {}, "manifest_version": 3, "version": "0.1", "description": "Inject the code from content script", "content_scripts": [ { "matches": ["https://www.youtube.com/*"], "js": ["main.js"], "run_at": "document_end", "all_frames": true } ], "permissions": ["activeTab"], "host_permissions": ["https://www.youtube.com"] }principal.js
console.log("start the script"); function injectFc() { console.log("run injectFc"); document.querySelectorAll('yt-live-chat-text-message-renderer:not([profile-link])').forEach(el => { console.log(el); console.log(JSON.stringify(el.data)); }) } window.setInterval(function () { injectFc(); }, 20000);Para recopilar los mensajes de transmisión en vivo, consulte la API oficial de transmisión en vivo .