Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

147
Vistas
¿Enviando HTMLVideoElement con chrome.runtime.sendMessage?

Soy bastante nuevo en el desarrollo de extensiones de Chrome, estoy tratando de hacer un mejor PiP (Picture in Picture) que no tenga la limitación de tamaño máximo de ventana.

Estoy usando esta extensión como referencia, básicamente se comporta de la misma manera que el PiP predeterminado funciona con video.requestPictureInPicture() que es lo que no quiero usar porque la ventana emergente de la extensión tiene un tamaño de ventana limitado.

En cambio, tengo una página index.html con mi extensión que está cargada con window.open en background.js , esta página de índice tendrá un elemento de video al que se pasa HTMLVideoElement.

Intenté usar chrome.runtime.sendMessage para enviar el video a video.js que carga la página index.html, pero esto no parece funcionar con HTMLVideoElement . Leí en otra parte que debería hacer JSON.stringify/JSON.parse para este objeto, pero eso da como resultado undefined.

Relevante manifest.json:

 "background": { "service_worker": "background.js" }, "content_scripts": [{ "all_frames": true, "js": [ "content.js" ], "matches": [ "*://*/*" ], "run_at": "document_start" }], "web_accessible_resources": [{ "resources": [ "index.html" ], "matches": [ "*://*/*" ] }], "manifest_version": 3, "permissions": [ "storage", "scripting", "activeTab", "tabs" ],

contenido.js:

 const videos = new Set(); window.addEventListener('canplay', e => { if(e.target.tagName === 'VIDEO') { videos.add(e.target); chrome.runtime.sendMessage({ method: 'VIDEO_PLAYING' }); } }, true);

fondo.js:

 await chrome.scripting.executeScript({ ... var win = window.open(chrome.runtime.getURL('index.html'), 'PiP'); win.focus(); chrome.runtime.sendMessage({ method: 'VIDEO', data: JSON.stringify(video) });

video.js: - este es el js que se acaba de incluir en index.html

 const onMessage = (request, sender) => { if(request.method === 'VIDEO') { var data = JSON.parse(request.data); console.log(video.src); //undefined } }; chrome.runtime.onMessage.addListener(onMessage);

Tal vez mi método para hacer esto sea completamente incorrecto. ¿Hay otras formas en que pueda pasar tales objetos a index.html de esta manera?

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda