使用 Javascript 将属性添加到 html 标签

Add attribute to html tag with Javascript

我正在使用 Javascript 代码来检测视频是否已加载。

加载后,我想将 autoplay 属性添加到 <video> 标记以使其播放,但我找不到添加该属性的方法。这是我使用的代码:

window.addEventListener('load', function() {
    var video = document.querySelector('#bgvid');
    var div = document.getElementById('#bgvid');

    function checkLoad() {
        if (video.readyState === 4) {
            alert('video is loaded')
            video.setAttribute("autoplay")
        } else {
            setTimeout(checkLoad, 100);
        }
    }

    checkLoad();
}, false);

********************* 解决方案 *********************

首先,感谢 DontVoteMeDown 的帮助。

正确的代码应该是:

document.getElementById('bgvid').addEventListener('canplaythrough', function() {
    this.play();
    });

为什么不将属性添加到标签中?来自 docs:

autoplay: (...) the video will automatically begin to play back as soon as it can do so without stopping to finish loading the data.

所以我假设(确实不确定)视频会在加载视频的一部分后立即开始播放。

无论如何,如果您仍然想添加属性,video 标签有一些 Events,来自文档:

  • canplay:当有足够的数据可以播放媒体时发送,至少播放几帧;
  • canplaythrough:当就绪状态变为CAN_PLAY_THROUGH时发送,表示可以不间断地播放整个媒体(...);

因此您可以使用其中一个事件来设置属性,例如:

document.getElementById('bgvid').addEventListener('canplay', function() {
    this.setAttribute("autoplay", "autoplay");
});

有了这个,您可以避免使用 超时,这不是最好的方法。

启用自动播放后,无需检查其加载状态,视频会在可以加载时播放。

video.autoplay = true;

here