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

时间:2017-01-14 23:53:14

标签: javascript html video

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

Compare these two code snippets and take a look at the Elements tab in Chrome developer tools

<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>

对于第一个video,未设置使用JS对象属性的muted集。对于第二个,使用setAttribute工作并设置DOM属性。有趣的是,autoplay的情况并非如此。

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

1 个答案:

答案 0 :(得分:3)

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

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

如果您设置src的{​​{1}}(以便实际上可以看到它),您会看到属性已正确应用

&#13;
&#13;
video
&#13;
&#13;
&#13;