使用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中的哪种方式?
答案 0 :(得分:3)
属性仅用于初始化属性。它们并不反映当前的状态。
通过直接设置属性,可以更新对象,但不会影响dom属性。
如果您设置src
的{{1}}(以便实际上可以看到它),您会看到属性已正确应用
video
&#13;