下面是三个场景:
document.adoptNode
, document.importNode
和 document.createElement
+分配 Prop 。 在每种情况下,视频都会自动播放,即使它没有附加到 DOM。这与
<script>
元素的行为不一致,该元素在附加到 DOM 之前不会评估/下载。视频应该自动播放吗?
https://gist.run/?id=cb657718c3b6b34c043b34f3356d5a84
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>GistRun</title>
</head>
<body>
<template>
<video src="http://video.webmfiles.org/big-buck-bunny_trailer.webm"
loop controls autoplay>
</video>
</template>
<script>
let template = document.querySelector('template');
// SCENARIO 1: (causes autoplay)
document.adoptNode(template.content);
// SCENARIO 2: (causes autoplay)
// document.importNode(template.content, true);
// SCENARIO 3: (causes autoplay)
// let video = document.createElement('video');
// video.autoplay = 'autoplay';
// video.controls = 'controls';
// video.loop = 'loop';
// video.src = 'http://video.webmfiles.org/big-buck-bunny_trailer.webm';
</script>
</body>
</html>
最佳答案
这是复制与剪切的区别。
如果愿意的话,在adaptNode 中,您正在删除已经解释过的内容,而在importNode 中,您正在复制一个节点(即生成对其他事物的描述),然后使用该描述在dom 本身上实现它。
那么哪种行为是正确的呢?两者都是;一个是剪辑,另一个是副本。自动播放是只发生在一个事物上,而不是一个事物的描述上。因此,无论操作提供了描述(而不是事物),该操作都不是自动播放适用的操作。
关于javascript - 未附加到 DOM 的视频是否应该自动播放?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37581912/