Advertisement
Guest User

mangadex fullscreen reader proof of concept

a guest
Sep 16th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Called when fullscreen mode is changed;
  3.  * Adds scrollbar to reader and changes toggle btn style
  4.  */
  5. function fullscreenModeChangedListener() {
  6.  
  7.   console.log("Fullscreen mode changed!");
  8.  
  9.   let reader = document.getElementsByClassName("reader-main")[0];
  10.   let btn = document.getElementById("fullscreenBtn");
  11.  
  12.   if(document.fullscreenElement) {
  13.     reader.style.overflowY = "auto";
  14.  
  15.     if(btn) {
  16.       btn.classList.remove("fa-expand");
  17.       btn.classList.add("fa-compress");
  18.       btn.style.marginRight = "5px";
  19.     }
  20.   } else {
  21.     reader.style.overflow = "";
  22.  
  23.     if(btn) {
  24.       btn.classList.remove("fa-compress");
  25.       btn.classList.add("fa-expand");
  26.       btn.style.marginRight = "20px";
  27.  
  28.     }
  29.   }
  30. }
  31.  
  32. /**
  33.  * Insert fullscreen toggle button
  34.  */
  35. function insertBtn(reader) {
  36.  
  37.   // create fullscreen trigger element
  38.   let btn = document.createElement("span");
  39.  
  40.   btn.id = "fullscreenBtn";
  41.   btn.classList.add("fas");
  42.   btn.classList.add("fa-expand");
  43.  
  44.   // custom styling for trigger
  45.   btn.style.position = "fixed";
  46.   btn.style.zIndex = 99;
  47.   btn.style.minWidth = "50px";
  48.   btn.style.minHeight = "50px";
  49.   btn.style.top = "0px";
  50.   btn.style.right = "0px";
  51.   btn.style.cursor = "pointer";
  52.   if(document.querySelector(".navbar.d-none")) {
  53.     btn.style.margin = "5px 20px 0 0";
  54.   } else {
  55.     btn.style.margin = "2.51rem 20px 0 0";
  56.   }
  57.   btn.style.fontSize = "30px";
  58.   btn.style.opacity = "0.25";
  59.  
  60.   // add onClick event listener
  61.   btn.addEventListener("click", () => {
  62.     if(!document.fullscreenElement) {
  63.       console.log("entering fullscreen");
  64.       reader.requestFullscreen().catch(err => {
  65.         console.log("Could not request fullscreen");
  66.         console.log(err.message);
  67.       });
  68.     } else {
  69.       console.log("exiting fullscreen");
  70.       document.exitFullscreen();
  71.     }
  72.   });
  73.  
  74.   // apend fullscreen trigger to reader
  75.   if(reader) {
  76.     reader.appendChild(btn);
  77.   }
  78. }
  79.  
  80. /**
  81.  * Initiates script
  82.  */
  83. function main() {
  84.   let reader = document.getElementsByClassName("reader-main")[0];
  85.  
  86.   document.addEventListener("fullscreenchange", fullscreenModeChangedListener);
  87.   insertBtn(reader);
  88. }
  89.  
  90. // run script
  91. main();
  92.  
  93. // vim: set ts=2 sts=2 sw=2 et :
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement