↓Headings

    @@ -1,49 +1,60 @@ /* - * @title 次の見出しへ - * @description 次の見出し(h1,h2,h3,h4,h5,h6要素)の場所へ移動します。 - * @include http://d.hatena.ne.jp/yuggrdrasill/ - * @license MIT License - * @require + * @title ↓Headings + * @description scroll into next headings (h1-6) + * @include http://* + * @include https://* + * @contributor yuggrdrasill http://let.hatelabo.jp/yuggrdrasill/let/gYC-xqSB3eS6NA (Fork of) + * @license MIT License https://opensource.org/licenses/MIT + * @javascript_url */ -//jQueryで見出し移動 -var getNowPosition = function() { -   return (document.documentElement.scrollTop || document.body.scrollTop); +// TBD +// - omit jQuery +// - replace to ES6+/ES2015+ +(function() { + +'use strict'; + +var currentPosition = function() { + return document.documentElement.scrollTop || document.body.scrollTop; }; -var move =function (el) { - jQuery(":header").each(function(){ - var linkTop = jQuery(this).offset().top; - var scrollTop = Math.floor(linkTop); - if(scrollTop > getNowPosition() + 2){ - jQuery("html,body").animate({scrollTop:scrollTop},100); +var move = function() { + var jQuery = window.jQuery; + + jQuery(':header').each(function() { + var offsetTop = Math.floor(jQuery(this).offset().top); + + if (offsetTop > currentPosition()) { + jQuery('html, body').animate({ + scrollTop: offsetTop + }, 100); return false; } }); +}; + +if (window.jQuery) { + move(); +} else { + var script = document.createElement('script'); + // must be needs versioned URL c.f. + // https://blog.jquery.com/2014/07/03/dont-use-jquery-latest-js/ + // XXX always 1.11.1 + // https://code.jquery.com/jquery.min.js + // jQuery 1.x latest stable: 1.12.4 + script.src = 'https://code.jquery.com/jquery-git.min.js'; + //script.src = 'https://code.jquery.com/jquery-3.1.1.min.js'; + //script.src = 'https://code.jquery.com/jquery-3.1.1.slim.min.js'; + //script.src = 'https://code.jquery.com/jquery-1.x-git.min.js'; + + script.addEventListener('load', function() { + move(); + }); + + var wall = document.head || document.body || document.documentElement; + wall.appendChild(script); } -if (window['jQuery'] && - window['jQuery']['fn'] && - window['jQuery']['fn']['offset'] - ){ - move(); - } else{ - // config - var src_url = 'http://code.jquery.com/jquery.min.js'; - - // jQuery loading - var s=document.createElement('script'); - s.setAttribute('src',src_url); - document.getElementsByTagName('body')[0].appendChild(s); - // jQueryが読み込み終わったら、メッセージを表示する。 - var id = window.setInterval(function(){ - //ファイル読み込みが完了したかどうか知る方法がわからないので、 - //暫定的に最後に定義するプロパティの存在をチェックする - if (window['jQuery'] && - window['jQuery']['fn'] && - window['jQuery']['fn']['offset'] - ){ - window.clearInterval(id); - move(); - } - },100); - } + +})(); +
  • /*
     * @title ↓Headings
     * @description scroll into next headings (h1-6)
     * @include http://*
     * @include https://*
     * @contributor yuggrdrasill  http://let.hatelabo.jp/yuggrdrasill/let/gYC-xqSB3eS6NA (Fork of)
     * @license MIT License https://opensource.org/licenses/MIT
     * @javascript_url
     */
    
    // TBD
    // - omit jQuery
    // - replace to ES6+/ES2015+
    (function() {
    
    'use strict';
    
    var currentPosition = function() {
      return document.documentElement.scrollTop || document.body.scrollTop;
    };
    
    var move = function() {
      var jQuery = window.jQuery;
    
      jQuery(':header').each(function() {
        var offsetTop = Math.floor(jQuery(this).offset().top);
    
        if (offsetTop > currentPosition()) {
          jQuery('html, body').animate({
            scrollTop: offsetTop
          }, 100);
          return false;
        }
      });
    };
    
    if (window.jQuery) {
      move();
    } else {
      var script = document.createElement('script');
      // must be needs versioned URL c.f.
      // https://blog.jquery.com/2014/07/03/dont-use-jquery-latest-js/
      //  XXX always 1.11.1
      //      https://code.jquery.com/jquery.min.js
      //      jQuery 1.x latest stable: 1.12.4
      script.src = 'https://code.jquery.com/jquery-git.min.js';
      //script.src = 'https://code.jquery.com/jquery-3.1.1.min.js';
      //script.src = 'https://code.jquery.com/jquery-3.1.1.slim.min.js';
      //script.src = 'https://code.jquery.com/jquery-1.x-git.min.js';
    
      script.addEventListener('load', function() {
        move();
      });
    
      var wall = document.head || document.body || document.documentElement;
      wall.appendChild(script);
    }
    
    })();
    
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2017/01/06 08:56:18 - 2017-01-06
  2. 2017/01/06 08:53:00 - 2017-01-06