diff options
author | amazingrise <8315221+AmazingRise@users.noreply.github.com> | 2021-05-14 07:37:14 +0300 |
---|---|---|
committer | amazingrise <8315221+AmazingRise@users.noreply.github.com> | 2021-05-14 07:37:14 +0300 |
commit | 67dcd4949d63350f71fdbcfbbe75b8b581dc07b7 (patch) | |
tree | b489a919d8f27590820b012822ee730a7ceb80dd | |
parent | 368250ef26613ab014bb78a2bbdea0f45cc8c4b7 (diff) |
Remove redundant scripts and improvements on toc.
-rw-r--r-- | layouts/partials/head.html | 6 | ||||
-rw-r--r-- | layouts/partials/journal.html | 18 | ||||
-rw-r--r-- | static/js/toc-collapse.js | 10 | ||||
-rw-r--r-- | static/js/toc.js | 47 |
4 files changed, 52 insertions, 29 deletions
diff --git a/layouts/partials/head.html b/layouts/partials/head.html index efbd13f..d142f2d 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -31,10 +31,6 @@ {{ template "_internal/google_analytics.html" . }} {{ end }} -<script src="{{"/vendor/js/jquery.min.js" | relURL}}" ></script> -<script src="{{"/vendor/js/popper.min.js" | relURL}}" ></script> -<script src="{{"/vendor/js/bootstrap.min.js" | relURL}}" ></script> -<script src="{{"/vendor/js/smooth-scroll.polyfills.min.js" | relURL}}" ></script> <link type="text/css" rel="stylesheet" href="{{"/vendor/css/bootstrap.min.css" | relURL}}"> <script src="{{"/vendor/js/vue.min.js" | relURL}}" ></script> @@ -72,7 +68,9 @@ {{ if .Site.Params.disableAutoCollapse }} <script src="{{"/js/toc.js" | relURL}}"></script> {{ else }} + <script src="{{"/vendor/js/jquery.min.js" | relURL}}" ></script> <script src="{{"/js/toc-collapse.js" | relURL}}"></script> + <script src="{{"/vendor/js/bootstrap.min.js" | relURL}}" ></script> {{ end }} {{ end }} diff --git a/layouts/partials/journal.html b/layouts/partials/journal.html index 95cdfe5..ea7ee66 100644 --- a/layouts/partials/journal.html +++ b/layouts/partials/journal.html @@ -59,6 +59,18 @@ app = new Vue({ document.cookie = "night=0;path=/"; document.body.classList.remove("night"); } + }, + throttle(callback, limit) { + var wait = false; + return function (...args) { + if (!wait) { + callback(...args); + wait = true; + setTimeout(function () { + wait = false; + }, limit); + } + } } }, created() { @@ -123,6 +135,12 @@ app = new Vue({ elem.classList.add("table-responsive"); elem.classList.add("table-hover"); }) + + {{ if and (not (.Params.disableToC) ) (.IsPage) }} + spy(); + window.addEventListener('wheel', this.throttle(spy,200), false); + {{ end }} + }, destroyed() { window.removeEventListener('scroll', this.handleScroll); diff --git a/static/js/toc-collapse.js b/static/js/toc-collapse.js index 25212a4..b106ee2 100644 --- a/static/js/toc-collapse.js +++ b/static/js/toc-collapse.js @@ -31,16 +31,6 @@ var spy = function () { collapseOthers(currentIndex); } -var onNavClick = function (name) { - var elems = $(":header"); - elems.each(function (idx) { - var id = $(this).attr('id'); - if (name == '#' + id + '-nav') { - collapseOthers(idx); - return; - } - }); -} var collapseOthers = function (currentIndex) { if (currentIndex == -1) { diff --git a/static/js/toc.js b/static/js/toc.js index accf88d..518850a 100644 --- a/static/js/toc.js +++ b/static/js/toc.js @@ -1,36 +1,53 @@ var spy = function () { - var elems = $(":header"); + var elems = document.querySelectorAll("h1, h2, h3, h4, h5, h6"); if (elems.length == 0) { return; } - var currentTop = $(window).scrollTop(); - var currentBottom = $(window).scrollTop() + $(window).height(); - var pageBottom = $('#EOF').offset().top; + var supportPageOffset = window.pageXOffset !== undefined; + var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"); + + var currentTop = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop; + var currentBottom = currentTop + window.height; + var pageBottom = window.pageBottom; var meetUnread = false var currentIndex = -1 - elems.each(function (idx) { - var elemTop = $(this).offset().top; - var id = $(this).attr('id'); - var navElem = $('#' + id + '-nav'); - if (currentTop + $(this).height() >= elemTop || currentBottom >= pageBottom) { - navElem.addClass('toc-active'); + elems.forEach(function (elem, idx) { + var elemTop = elem.offsetTop; + var id = elem.getAttribute('id'); + //console.log(id,elem.offsetTop) + var navElem = document.getElementById(id + '-nav'); + if (navElem==null) { + return + } + if (currentTop >= elemTop || currentBottom >= pageBottom) { + + navElem.classList.add('toc-active'); } else { if (meetUnread == false) { meetUnread = true currentIndex = idx - 1 } - navElem.removeClass('toc-active'); + navElem.classList.remove('toc-active'); } }) + document.querySelectorAll(".collapse").forEach(function(elem){ + elem.classList.remove("collapse"); + }) } -$().ready(function () { + +var onNavClick = function () { + +} + + +/*$().ready(function () { $(".collapse").each(function (idx) { $(this).collapse("show"); }); - spy(); - $(window).bind('scroll', throttle(spy)); -}); + //spy(); + //$(window).bind('scroll', throttle(spy)); +});*/ function throttle(func, timeout = 250) { let last; |