single.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. "use strict";
  2. var isMobile = false, isTablet = false, isLaptop = false;
  3. (function ($) {
  4. jQuery(document).ready(function () {
  5. function detectDevice() {
  6. if (window.innerWidth <= 425) {
  7. isMobile = true;
  8. isTablet = false;
  9. isLaptop = false;
  10. } else if (window.innerWidth <= 768) {
  11. isMobile = false;
  12. isTablet = true;
  13. isLaptop = false;
  14. } else {
  15. isMobile = false;
  16. isTablet = false;
  17. isLaptop = true;
  18. }
  19. }
  20. detectDevice();
  21. // =========== Add anchor to the headers ================
  22. function addAnchor(element) {
  23. element.innerHTML = `<a href="#${element.id}" class="header-anchor">${element.innerHTML}<sup><i class="fas fa-link"></i></sup></a>`;
  24. }
  25. var postContent = document.getElementById("post-content");
  26. if (postContent != null) {
  27. var headerTypes = ["h1", "h2", "h3", "h4", "h5", "h6"];
  28. for (var i = 0; i < headerTypes.length; i++) {
  29. var headers = postContent.querySelectorAll(headerTypes[i]);
  30. if (headers) {
  31. headers.forEach(addAnchor);
  32. }
  33. }
  34. }
  35. // =============== Make TOC Compatible wit Bootstrap Scroll Spy ========
  36. // add "navbar" class to the "nav" element
  37. let toc = document.getElementById("TableOfContents");
  38. toc.classList.add("navbar");
  39. // add "nav-pills" class to the "ul" elements
  40. let elems = toc.getElementsByTagName("ul");
  41. for (let i = 0; i < elems.length; i++) {
  42. elems[i].classList.add("nav-pills");
  43. }
  44. // add "nav-item" class to the "li" elements
  45. elems = toc.getElementsByTagName("li");
  46. for (let i = 0; i < elems.length; i++) {
  47. elems[i].classList.add("nav-item");
  48. if (isMobile) {
  49. elems[i].setAttribute("onclick", "toggleTOC()");
  50. }
  51. }
  52. // add "nav-link" class to the "a" elements
  53. elems = toc.getElementsByTagName("a");
  54. for (let i = 0; i < elems.length; i++) {
  55. elems[i].classList.add("nav-link");
  56. }
  57. });
  58. })(jQuery);