Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

150
Views
¿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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!