Search

JQuery - 全螢幕控制切換與其事件

2014-11-30 11:11 PM

有時若需要讓使用者完全沉浸於我們設計的使用者體驗內時

就會需要使用全螢幕的功能

但可能是安全性上的考量或是避免開發者濫用全螢幕功能

此功能必須由使用者以按鈕觸發才可動作

以下範例為在特定DIV加上全螢幕控制按鈕功能

並可切換指定容器顯示為全螢幕狀態

程式碼範例
  1. // 全螢幕控制按鈕
  2. var fullscreenDiv = $("#fullscreenDiv");
  3. fullscreenDiv.on("click", doFullScreen);
  4.  
  5. // 針對各瀏覽器觸發全螢幕要求
  6. function doFullScreen(){
  7. // 取得要顯示為全螢幕的容器
  8. var elem = $("#fullScreenTarget")[0];
  9. var isFullScreen = document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen;
  10. // 目前非全螢幕狀態 開啟全螢幕
  11. if( !isFullScreen ){
  12. if (elem.requestFullscreen) {
  13. elem.requestFullscreen();
  14. } else if (elem.msRequestFullscreen) {
  15. elem.msRequestFullscreen();
  16. } else if (elem.mozRequestFullScreen) {
  17. elem.mozRequestFullScreen();
  18. } else if (elem.webkitRequestFullscreen) {
  19. elem.webkitRequestFullscreen();
  20. }
  21. }
  22. // 目前為全螢幕狀態 關閉全螢幕
  23. else{
  24. if (document.exitFullscreen) {
  25. document.exitFullscreen();
  26. } else if (document.msExitFullscreen) {
  27. document.msExitFullscreen();
  28. } else if (document.mozCancelFullScreen) {
  29. document.mozCancelFullScreen();
  30. } else if (document.webkitExitFullscreen) {
  31. document.webkitExitFullscreen();
  32. }
  33. }
  34. }
  35.  
  36. // 全螢幕要求事件(包括進入及退出)
  37. $(document).on("mozfullscreenchange webkitfullscreenchange fullscreenchange", fullscreenChange);
  38.  
  39.  
  40. // 針對全螢幕狀態處理
  41. function fullscreenChange(){
  42. var isFullScreen = document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen;
  43. // 目前非全螢幕狀態 設定回預設大小(由內容決定)
  44. if( !isFullScreen ){
  45. $("#fullScreenTarget").width("");
  46. }
  47. // 目前為全螢幕狀態 設定為100%大小
  48. else{
  49. $("#fullScreenTarget").width("100%");
  50. }
  51. }
詳細解說
  1. // 僅有透過使用者互動行為才可啟動全螢幕相關方法
  2. // 若不使用此方式 呼叫全螢幕將會無效
  3. var fullscreenDiv = $("#fullscreenDiv");
  4. fullscreenDiv.on("click", doFullScreen);
  5.  
  6. // 全螢幕不一定是將整個網頁文件做全螢幕顯示
  7. // 亦可指定特定的容器做全螢幕顯示
  8. // 例如我只想要顯示畫面主體的內容
  9. // 而不想要顯示選單部分
  10. // 則只要選擇包含主體內容的容器即可
  11. var elem = $("#fullScreenTarget")[0];
  12.  
  13. // 針對各瀏覽器的全螢幕屬性值做檢查
  14. var isFullScreen = document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen;
  15.  
  16. // 針對各家瀏覽器呼叫特定的全螢幕方法
  17. if (elem.requestFullscreen) {
  18. elem.requestFullscreen();
  19. } else if (elem.msRequestFullscreen) {
  20. elem.msRequestFullscreen();
  21. } else if (elem.mozRequestFullScreen) {
  22. elem.mozRequestFullScreen();
  23. } else if (elem.webkitRequestFullscreen) {
  24. elem.webkitRequestFullscreen();
  25. }
  26.  
  27. // 針對各家瀏覽器呼叫特定的關閉全螢幕方法
  28. // 須注意此處是使用document做控制
  29. // 無論一開始選擇的全螢幕容器為何皆相同
  30. if (document.exitFullscreen) {
  31. document.exitFullscreen();
  32. } else if (document.msExitFullscreen) {
  33. document.msExitFullscreen();
  34. } else if (document.mozCancelFullScreen) {
  35. document.mozCancelFullScreen();
  36. } else if (document.webkitExitFullscreen) {
  37. document.webkitExitFullscreen();
  38. }
  39.  
  40. // 全螢幕狀態更改時將會觸發事件(各家瀏覽器的事件亦不相同)
  41. // 須注意此處使用的亦是document
  42. $(document).on("mozfullscreenchange webkitfullscreenchange fullscreenchange", fullscreenChange);
  43.  
  44. // 在fullscreenChange()方法內會看到特地修改了容器的大小
  45. // 是因為指定要顯示為全螢幕的容器大小比例將會維持
  46. // 並不會因為放大為全螢幕就自動符合全螢幕的長寬比例
  47. // 因此若要顯示為滿版畫面
  48. // 就必須要指定寬度為100%
  49. $("#fullScreenTarget").width("100%");
各項資料連結
JQuery 官方網站

No comments:

Post a Comment