使用 js 播放视频,不受用户交互限制

Play a video with js without the restriction of user interaction

提问人:ANDRES DAVID CAMARGO ARCOS 提问时间:11/12/2023 最后编辑:mplungjanANDRES DAVID CAMARGO ARCOS 更新时间:11/12/2023 访问量:104

问:

需要从我的 chrome 扩展程序的 content-script 文件中使用 js 播放视频元素。

错误是:

DOMException:play() 失败,因为用户没有先与文档交互。

我见过其他扩展程序,例如 Youtube Party 打开 youtube 视频并直接播放,而无需与页面进行交互。审查他的源代码,他们只是像我一样做,但对他们来说它有效,我能做些什么来避免 DOMException?videoHtmlElement.play()

我的代码是:

case "syncVideoState":
  const {time, paused} = msg.currentVideoState;
  item.currentTime = time;
  if(!paused){
    item.play();
  } else {
    item.pause();
  }
  sendResponse(true);
  break; 
JavaScript Web DOM 谷歌浏览器扩展

评论

1赞 wOxxOm 11/12/2023
请注意,Chrome 使用媒体参与启发式方法允许非静音自动播放,具体取决于网站,因此允许使用 youtube。

答:

0赞 Greenylie 11/12/2023 #1

发生这种情况是因为一个相对较新的浏览器策略,该策略阻止音频源在用户未首先与页面交互的情况下播放。

“避免”此问题的最简单方法是在播放视频之前打电话。item.muted = true;

请看这里以获取更多信息。