コンテンツにスキップ

利用者:Jkr2255/independentlyScrollableSidebar-dev.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

jQuery(function(){
  var $panel=$('#mw-panel');
  $('<div id="iss-base"><div id="iss-top"></div></div>').appendTo('body');
  $('#iss-base,#iss-top').width($panel.outerWidth(true));
  var toppos=$panel.position().top;
  var $top=$('#iss-top').css('top',toppos);
  var $base=$('#iss-base');
  $panel.appendTo($top).css('top',0);
  $('#p-logo').appendTo("body").css('top',0).css('position','fixed');
  var $up=$('<div class="iss-btn up">▲</div>').appendTo($top);
  var $down=$('<div class="iss-btn down">▼</div>').appendTo($base);
  //枠線が見えるように幅を4px調整
  $('div.iss-btn').width($base.width()-4);

  //スクロール制御用の関数たち
  var stopScroll=function(e){
    $panel.stop(true);
  };
  var isUpScrollable=function(){
    return ($panel.position().top) != 0;
  };
  var getDownScrollRange=function(){
    return ($panel.outerHeight(true)+$panel.position().top) -
      ($base.height() - toppos);
  };
  var isDownScrollable=function(){
    return getDownScrollRange()>0;
  };
  function drawButtons (){
    $up.toggle(isUpScrollable());
    $down.toggle(isDownScrollable());
  }
  function minTop(){
    return ($base.height() - toppos)-$panel.outerHeight();
  } 
  $(window).resize(drawButtons);
  // 開閉の待ち時間
  $panel.find("h5").click(function(){
    window.setTimeout(drawButtons,500)
  });
  drawButtons();
  if(typeof(issSpeed)=="undefined") issSpeed=250;
  $('div.iss-btn').mouseleave(function(e){
    $panel.stop(true);
    drawButtons();
  });
  $down.mouseenter(function(e){
    if(!isDownScrollable()) return;
    var scrollTime=getDownScrollRange() * 1000 / issSpeed;
    $panel.animate({top: minTop()},scrollTime,'linear',drawButtons);
  });

  $up.mouseenter(function(e){
    if(!isUpScrollable()) return;
    var scrollTime=-$panel.position().top;
    scrollTime=scrollTime * 1000 / issSpeed;
    $panel.animate({top: 0},scrollTime,'linear',drawButtons);
  });
  function wheelMain(e,delta){
  if(typeof(issWheelSpeed)=="undefined") issWheelSpeed=20;
    var y,s;
    e.preventDefault();
    y=delta*issWheelSpeed+$panel.position().top;
    if(delta>0){
      if(!isUpScrollable())return;
      if(y>0){ y=0; }
    } else {
      if(!isDownScrollable())return;
      if(y<minTop()){y=minTop();}
    }
    $panel.css('top',y);
    drawButtons();
   }
  //ホイール関連
  if(window.opera||typeof($top.get(0).onmousewheel)!='undefined') {
    $top.bind("mousewheel",function(e){ // other than Gecko
      wheelMain(e,e.wheelDelta/120);
    });
  } else {
    $top.bind("DOMMouseScroll",function(e){ //Gecko
      wheelMain(e,e.detail/(-3));
    });
  }

});