HTML5视频静音属性未使用属​​性应用,但使用setAttribute应用

Tom*_*uer 5 html javascript video

在使用HTML5视频时,我发现了一个奇怪的不一致.

比较这两个代码段并查看Chrome开发人员工具中的" 元素"标签

<body>
  <script>
    const video1 = document.createElement('video');
    video1.autoplay = true;
    video1.muted = true;
    document.body.appendChild(video1);

    const video2 = document.createElement('video');
    video2.setAttribute('autoplay', 'autoplay');
    video2.setAttribute('muted', 'muted');
    document.body.appendChild(video2);
  </script>
</body>
Run Code Online (Sandbox Code Playgroud)

对于第一个video,未muted设置使用JS对象属性的设置.对于第二个,使用setAttributeworking和DOM属性进行设置.有趣的是,情况并非如此autoplay.

这是为什么?是否存在另一个以这种方式表现的属性示例?这有规则吗?除了测试之外,如何判断哪个属性的属性在JS中的哪种方式?

Gab*_*oli 7

属性仅用于初始化属性。它们不反映当前状态。

通过直接设置属性,您可以更新对象,但不会影响 dom 属性。

如果您设置srcvideo所以你可以看到它在行动),你将看到性能已正确应用

const video1 = document.createElement('video');

video1.src = 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4';
video1.controls = true;
video1.autoplay = true;
video1.muted = true;

document.body.appendChild(video1);
Run Code Online (Sandbox Code Playgroud)

  • @AntonMalyshev `video.defaultMulated` 是反映 muted 属性的属性 (2认同)