需要使用 chrome 扩展的内容脚本文件中的 js 播放视频元素。
错误是:
DOMException:play() 失败,因为用户没有先与文档交互。
我见过其他扩展程序,例如 Youtube Party,可以打开 YouTube 视频并直接播放,而无需与页面进行交互。回顾他的源代码,他们只是像我一样做
videoHtmlElement.play()
,但对他们来说这是有效的,我该怎么做才能避免 DOMException?
我的代码是:
case "syncVideoState":
const {time, paused} = msg.currentVideoState;
item.currentTime = time;
if(!paused){
item.play();
} else {
item.pause();
}
sendResponse(true);
break;
发生这种情况是因为相对较新的浏览器策略会阻止在用户未先与页面交互的情况下播放audio源。
“避免”此问题的最简单方法是在播放视频之前调用
item.muted = true;
。
请查看这里了解更多信息。