внутри Iframe перестает работать функция включения звука проигрывателя Youtube - PullRequest
0 голосов
/ 05 марта 2019

Прежде чем пометить это как дубликат, пожалуйста, прочитайте детали.

У меня есть проигрыватель YouTube, который автоматически отключает звук внутри iframe, у меня есть кнопка включения звука, и я нажимаю unMute () при нажатии кнопки.Однако я получаю эту ошибку:

Не удалось включить звук, и вместо этого элемент был приостановлен, потому что пользователь не взаимодействовал с документом до

, это код проигрывателя:

try {
      new YT.Player('ytplayer', {
        height: '100%',
        width: '100%',
        videoId: this.config.mediaId,
        playerVars: {
          modestbranding : 1,
          rel : 0,
          showinfo : 0,
          autoplay: 1,
          color: 'white',
          rel: 0,
          playsinline: 1,
          controls: 0
        },
        events: {
          onReady: this.onPlayerReady.bind(this)
        }
      });
    } catch(e) {
      showErrorScreen(e);
    }

onPlayerReady(event) {
    this.playerRef = event.target;
    this.playerRef.mute();
    this.playerRef.playVideo(); // because autoplay: 1 sometimes does not work

  }

...
const unmute = (event) => {
    playerRef.unMute();
    state.muted = false;
    updateVolumeControls();
  };

Здесь ссылка на страницу:

https://video.inpwrd.net/college-prep-dont-go-it-alone/48ebe783-bcc4-4b96-9ba5-aff3db5f13df

За пределами iframe это работает.Это определенно ошибка в коде плеера YouTube.Я придерживаюсь автозапуска приглушенной политики.Я считаю, что у них есть предположение, что плеер всегда находится в корневом документе.Это трассировка стека:

Не удалось включить звук, и вместо этого элемент был приостановлен, поскольку пользователь раньше не взаимодействовал с документом

g.h.xk  @   base.js:6951
jya @   base.js:4586
yQ  @   base.js:4585
Fna @   base.js:3091
g.h.unMute  @   base.js:6718
a.F.(anonymous function)    @   base.js:3082
g.h.handleExternalCall  @   base.js:6698
a.C.(anonymous function)    @   base.js:3086
(anonymous) @   www-embed-player.js:526
k.la    @   www-embed-player.js:609
k.La    @   www-embed-player.js:598
ii.B    @   www-embed-player.js:594

Пожалуйста, не предлагайте хакерские решения, которые работают сегодняи перестань работать завтра.

1 Ответ

0 голосов
/ 08 марта 2019

allow = "autoplay; fullscreen" в iframe это исправило w3c.github.io/webappsec-feature-policy/#allowlist -

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...