¿Alguien sabe porque me genera este error? <code>Uncaught (in promise) DOMException: The play method is not allowed by the user agent or ...

Pregunta de la clase:
Getters y setters
Roberto Cortés Monroy

Roberto Cortés Monroy

Pregunta
studenthace 5 años

¿Alguien sabe porque me genera este error?

Uncaught (in promise) DOMException: The play method is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.```
4 respuestas
para escribir tu comentario
    Efrén Cruz

    Efrén Cruz

    studenthace 4 años

    Hola, me pasaba lo mismo, me di cuenta que

    player.muted
    se pasaba con valor
    true
    , por eso no entraba a la condición y pasaba directo al
    player.play()
    que es lo que ocasiona el error, lo que hice para solucionarlo fue detectar el valor de
    player.muted
    e igualarlo a su valor contrario:
    player.muted = !player.muted;
    , lo arregla y funciona, la única diferencia es que al iniciar la pagina si reproduce el video junto con el audio y no empieza muteado como en el ejemplo del profesor.

    Roberto Cortés Monroy

    Roberto Cortés Monroy

    studenthace 5 años

    mi código es el siguiente:

    function MediaPlayer(config) { this.media = config.el; this.plugins = config.plugins || []; this._initPlugins(); } MediaPlayer.prototype._initPlugins = function () { const player = { play: () => this.play(), pause: () => this.pause(), media: this.media, get muted() { return this.media.muted; }, set muted(value) { this.media.value = value } } this.plugins.forEach(plugin => { plugin.run(player) }); } MediaPlayer.prototype.play = function () { this.media.play(); }; MediaPlayer.prototype.pause = function () { this.media.pause(); }; MediaPlayer.prototype.togglePlay = function () { if (this.media.paused) { this.play(); } else { this.pause(); } }; MediaPlayer.prototype.unmuteMute = function () { if (this.media.muted) { this.media.muted = false; console.log('Desmuteado de pana') } else { this.media.muted = true; console.log('Muteado de pana') } }; let muteado = document.querySelector('#muteo') function AutoPlay() { } AutoPlay.prototype.run = function (player) { if (!player.muted) { player.muted = true; } player.play(); } const video = document.querySelector('video'); const player = new MediaPlayer({ el: video, plugins: [new AutoPlay] }); const button = document.querySelector('button'); button.onclick = () => player.togglePlay(); muteado.onclick = () => player.unmuteMute()
    Juan Pablo Celiz

    Juan Pablo Celiz

    studenthace 5 años

    Aunque también puede ser que el reproductor intente darle play al video apenas se carga la página y el browser tira ese error, creo que en clases anteriores el profe había explicado un error similar

    Juan Pablo Celiz

    Juan Pablo Celiz

    studenthace 5 años

    Hola! Mmm a simple vista no comprendo muy bien en qué línea del código lo tienes, en base a la info que pasas puedo suponer que hay un error con algún this en referencía al contexto actual. Aunque también puede ser que no estés manejando algún error en promesas (?)

Curso Profesional de JavaScript

Curso Profesional de JavaScript

Mejora tus habilidades en Javascript. Conoce Typescript y cómo puedes ocuparlo para mejorar el control de tus variables. Comprende conceptos avanzados que te permitan plantear mejores soluciones en tu código. Conoce las APIs del DOM y descubre cómo puedes organizar mejor tu código utilizando patrones de diseño.

Curso Profesional de JavaScript

Curso Profesional de JavaScript

Mejora tus habilidades en Javascript. Conoce Typescript y cómo puedes ocuparlo para mejorar el control de tus variables. Comprende conceptos avanzados que te permitan plantear mejores soluciones en tu código. Conoce las APIs del DOM y descubre cómo puedes organizar mejor tu código utilizando patrones de diseño.