视频不开始播放,而是抛出DOMException

时间:2019-04-17 03:33:50

标签: javascript html video ecmascript-6

我刚刚创建了视频对象,然后在将视频对象添加到文档中之前添加了两个属性,例如 source muted ,最后使用方法 play()播放添加的视频,如下所示。

let v = document.createElement("video");
v.setAttribute("src","videoplayback.mp4");
v.setAttribute("muted","muted");

document.body.appendChild(v);
v.play().catch((e)=>{ console.log(e)});  // it returns DomException why?

那么有人可以告诉我哪里出了问题或为我解决这个问题。

注意:显示了一个视频图像,但它没有运行。.

4 个答案:

答案 0 :(得分:1)

这是Google Chrome浏览器中新增的一项功能-在用户与页面进行积极互动(点击)之前,无法播放媒体(例如视频和声音)。只需添加一个created变量,将所有代码放入click处理程序中,然后在createdfalse的情况下创建视频,然后将created设置为{{ 1}}:

true

答案 1 :(得分:0)

这似乎很明显,但是,请确保您没有安装阻止视频播放的扩展程序。就我而言,我最近完成的一个站点运行正常。我回过头去查看该站点并收到以下错误消息:VM476:96未捕获(承诺)DOMException:用户代理不允许使用play方法。

几分钟后,我意识到我最近安装了AutoplayStopper,这当然阻止了视频运行自动播放。

答案 2 :(得分:0)

这是因为您的浏览器默认设置。它已设置为不播放任何音频或视频。 Firefox: https://support.mozilla.org/en-US/kb/block-autoplay

答案 3 :(得分:0)

默认情况下,不仅在 Chrome 中,而且在 Mozilla Firefox 和其他浏览器中,如果视频包含音频且未静音,则视频自动播放命令将被拒绝。 解决它的唯一方法是使用 javascript 强制自动播放音频。 但是,如果您将视频标签设置为 muted="muted" 并自动播放,即使您已将浏览器设置为不自动播放视频,视频仍会自动播放。