nextH

    @@ -17,16 +17,10 @@ // window.pageYOffset // document.documentElement.scrollTop // document.body.scrollTop - const absHPos = (heading.getBoundingClientRect().top + document.body.scrollTop) | 0; + const absHPos = Math.trunc(heading.getBoundingClientRect().top + document.body.scrollTop); if (absHPos > document.body.scrollTop) { heading.scrollIntoView(); return true; } }); -/* DBG -Array.from(document.body.querySelectorAll([ - Array.from(Array(6).keys(), n => 'h' + (n + 1)) -]), h => console.log(h.tagName, h.textContent.trim(), h.offsetTop, h.getBoundingClientRect())) -*/ -
  • /*
     * @title nextH
     * @description scroll into next headings (h1-6)
     * @include http://*
     * @include https://*
     * @contributor yuggrdrasill  http://let.hatelabo.jp/yuggrdrasill/let/gYC-xqSB3eS6NA
     * @contributor noromanba     http://let.hatelabo.jp/noromanba/let/hLHWrpDmo_lO (Fork of)
     * @license MIT License       https://opensource.org/licenses/MIT
     * @javascript_url
     */
    
    Array.from(document.body.querySelectorAll([
      Array.from(Array(6).keys(), n => 'h' + (n + 1))
    ])).some(heading => {
      // current scrolling values
      //    window.scrollY
      //    window.pageYOffset
      //    document.documentElement.scrollTop
      //    document.body.scrollTop
      const absHPos = Math.trunc(heading.getBoundingClientRect().top + document.body.scrollTop);
      if (absHPos > document.body.scrollTop) {
        heading.scrollIntoView();
        return true;
      }
    });
    
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2017/01/08 00:44:02 - 2017-01-08
  2. 2017/01/07 07:51:08 - 2017-01-07
  3. 2017/01/07 07:45:52 - 2017-01-07