Estoy escribiendo una extensión para ver videos en YouTube. Se abre un sitio con un temporizador en el que se encuentra el iframe de YouTube. Solo necesito reproducir el video. Lo hago con un clic. El problema es que no funciona. El acceso al iframe está en el manifiesto. Sucede el clic, la pantalla parpadea durante un segundo y no sucede nada. Es interesante que a veces funciona sin problemas. No entiendo cuál es el problema.
manifest.json: { "manifest_version": 2, "name": "test", "description": "test", "version": "1.0", "permissions": ["tabs","storage","<all_urls>","activeTab"], "content_scripts": [ { "matches": ["<all_urls>"], "js": ["background.js"], "run_at": "document_end", "all_frames": true } ], }fundamentos.js:
const delay = millis => new Promise((resolve, reject) => { setTimeout(_ => resolve(), millis) }); async function test(){ var url = window.location.toString(); var ytframe = "www.youtube.com/embed"; var resultytframe = url.match(ytframe); if(resultytframe==ytframe){ document.querySelectorAll("button[class='ytp-large-play-button ytp-button']")[0].click(); } } test();Además, todo funcionará si hago un clic físico del mouse en cualquier lugar (además del botón de reproducción) o escribo algo en la consola antes de trabajar en background.js. Vídeo por ejemplo: https://youtu.be/rlf0eVyPf8w
Debe activar el sonido de YouTube en la configuración del navegador. Este problema surgió en mi navegador Brave en Chromium: 89.0.4389.72, decidí verificarlo en el navegador Google Chrome en Chromium 102.0.5005.63, no hay tal problema y puedes apagar el sonido