1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
<!DOCTYPE html>
<html>
<meta name="viewport" content="width=device-width, initial-scale=1">
<head>
<style>
body, html {
width: 100%;
height: 100%;
margin: 0;
}
.container {
width: 640px;
height: 480px;
position: relative;
border: 1px solid red;
}
video {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div class="container">
<video muted loop></video>
</div>
</body>
<script>
var container = document.querySelector(".container");
var video = document.querySelector("video");
async function loadSource(source)
{
return new Promise(resolve => {
video.addEventListener("load", resolve, { once: true });
video.src = source;
});
}
async function waitForVideoFrame()
{
return new Promise(resolve => {
video.requestVideoFrameCallback((timestamp, metadata) => {
resolve(timestamp);
});
});
}
function performWithUserGestureIfPossible(callback)
{
if (window.internals)
internals.withUserGesture(callback);
else
callback();
}
function enterFullscreen()
{
if (document.webkitIsFullScreen)
return false;
performWithUserGestureIfPossible(() => {
container.webkitRequestFullscreen({ navigationUI: "hide" });
video.play();
});
return true;
}
function exitFullscreen()
{
if (!document.webkitIsFullScreen)
return false;
performWithUserGestureIfPossible(() => {
document.webkitExitFullscreen();
video.pause();
});
return true;
}
</script>
</html>
|