Tengo un manifiesto que se parece a esto:
"web_accessible_resources": [ { "resources": [ "script_injector.html", "script2.html" ], "matches": [ "<all_urls>" ] } ], "content_scripts": [ { "matches": [ "<all_urls>" ], "js": [ "new-content.js" ] } ],En new-content.js he configurado un iframe:
let ifr = document.createElement('iframe'); ifr.setAttribute('allow', "microphone; camera; display-capture;"); ifr.style.display = 'none'; ifr.src = chrome.runtime.getURL('script_injector.html'); document.body.appendChild(ifr);Script_injector.html se ve así.
<script src='script_injector.js'></script>Script_inyector.js
Este archivo tiene datos que deben guardarse antes de que se cierre la pestaña que contiene el iframe. Los datos son blobs de MediaRecorder que están disponibles solo cuando se detiene Mediarecorder. Necesito guardar los datos si la pestaña está cerrada y he intentado poner los datos guardados dentro de la siguiente función:
chrome.tabs.onRemoved.addListener(function (tabId, changeInfo, tab) { savedata() })chrome.tabs.onRemoved no se activa en absoluto cuando cierro la pestaña. Lo que significa que los datos que se registran se pierden.
Tenga en cuenta que: No puedo usar MediaRecorder en Service Worker en Manifest v3 porque las API de medios y audio no están permitidas. Así que lo uso de esta manera. No conozco otras formas, pero creo que es el único método.
¿Cómo guardo los datos antes de que se cierre la página que contiene el iframe?