請問,若有一mp4影片檔(非youtube影片),如何點此影片的連結後,不用按瀏覽器的功能鍵F11來進入瀏覽器的全螢幕模式,可自動進入瀏覽器的全螢幕模式播放此影片呢?謝謝。
土砲作法提供您參考...
demo:
http://www.web3d.url.tw/demo/USER/ccutmis/clickVideoLinkFullscreen/
<!DOCTYPE html>
<html lang="zh-tw">
<head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Untitled</title></head>
<body>
<video id="myvideo" src="" autoplay="" muted="" loop="" controls width="0" height="0"></video>
<a href="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" onclick="clickVideoLink(this.href);return false;">點我觀看全屏影片</a>
<script>
function openFullscreen(targetId) {
var elem = document.getElementById(targetId);
if (elem.requestFullscreen) {
elem.requestFullscreen();
} else if (elem.mozRequestFullScreen) { /* Firefox */
elem.mozRequestFullScreen();
} else if (elem.webkitRequestFullscreen) { /* Chrome, Safari & Opera */
elem.webkitRequestFullscreen();
} else if (elem.msRequestFullscreen) { /* IE/Edge */
elem.msRequestFullscreen();
}
}
document.addEventListener('fullscreenchange', exitHandler);
document.addEventListener('webkitfullscreenchange', exitHandler);
document.addEventListener('mozfullscreenchange', exitHandler);
document.addEventListener('MSFullscreenChange', exitHandler);
function exitHandler() {
if (!document.fullscreenElement && !document.webkitIsFullScreen && !document.mozFullScreen && !document.msFullscreenElement) {
//當全屏影片播放時取消全屏狀態時會觸發的程式碼
document.getElementById('myvideo').src='';
}
}
function clickVideoLink(video_url){
document.getElementById('myvideo').src=video_url;
openFullscreen('myvideo');
console.log(video_url);
}
</script>
</body>
</html>
如果你試著在window.onload事件去呼叫clickVideoLink(影片路徑)
會得到一個'Failed to execute 'requestFullscreen' on 'Element': API can only be initiated by a user gesture'的錯誤,我上網google好像這是fullscreen api本身設計,要由使用者去觸發事件,
如果是要開啟頁面就全屏播放一個影片的話可能要用別的寫法(例如
另外增加一個video標籤透過css跟js讓它的尺寸在布滿整個畫面,因為這不是video全屏事件所以要另外處理按esc的事件,這邊範例就是當首頁全屏播放影片的時候按esc會把這個影片的style.display設為'none'達到隱藏影片的效果,你了解原理後再依實際需求修改即可)
<!DOCTYPE html>
<html lang="zh-tw">
<head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Untitled</title>
<style>
#intro_video{display:none;position:absolute;top:0px;left:0px;width:100vw;height:100%;border:solid 1px #f00;background:#000;}
</style>
</head>
<body>
<video id="intro_video" src="" autoplay="" muted="" loop="" controls width="0" height="0"></video>
<div style="background:#aaa;padding:20px 0px;text-align:center;">
原本的首頁內容
</div>
<script>
var is_play_intro=false;
function play_intro_video(video_url){
document.getElementById('intro_video').src='http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4';
document.getElementById('intro_video').style.display='block';
is_play_intro=true;
};
window.onload=play_intro_video;
window.addEventListener('keydown', (e) => {
const keyNum=e.keyCode;
console.log("keypressed " + keyNum);
if(keyNum===27){ document.getElementById('intro_video').style.display='none';
is_play_intro=false;}
});
</script>
</body>
</html>
感謝您的回覆,用上述的方法瀏覽器還是沒有進入全螢幕模式,後來我改用瀏覽器的kiosk mode來實做這個功能,謝謝。
不客氣~
網路上找有一堆。
我就貼一個給你吧
https://www.zhangxinxu.com/study/201210/html5-full-screen-api.html
http://www.mediaelementjs.com/
這邊找到一個做好現成的。你套進去就可以用了。