すっかりデフォルトにしてしまったSleipnir Start。

「はてブ人気エントリー」に別ウィンドウで開くボタンが欲しいなと思って、先日書いたGreaseMonkeyに機能追加してみました。

sleipnir_start_news_mode.user.js

ソース

// ==UserScript==
// @name           Sleipnir Start: News Mode Starter
// @version        0.0.3
// @namespace      http://www.nobodyplace.com
// @description    show "news mode" when load "Sleipnir Start".
// @include        http://www.sleipnirstart.com/*
// ==/UserScript==

(function(){
// 新しいウィンドウで開くボタンを表示するときにはtrueにする
  var SHOW_NEW_WINDOW = true;

  var w = (typeof unsafeWindow == 'undefined') ? window : unsafeWindow;
  w.onload = function() {
    var myInterval = setInterval(function() {
      if( w.loadCompleteFlag ){
        clearInterval(myInterval);
        w.chgNewsMode();
        if(SHOW_NEW_WINDOW) {
          var myInterval2 = setInterval(function() {
            if( document.getElementById('nn175') ) {
              clearInterval(myInterval2);
              showNewWindow(w);
            }
          }, 100);
        }
      }
    }, 100);
  }
  var showNewWindow = function(w) {
    var elements = document.getElementsByTagName('a');
    for(i=0; i<elements.length; i++) {
      if((elements[i].getAttribute('class')) == 'nc_new_w') {
        elements[i].style.display='inline-block';
      }
    }
  }
})();



コメント

実は別ウィンドウで開くボタンは元々付いています。人気エントリー一覧などからタイトルをクリックするとドロップダウンが開いて、ページ遷移無しでニュースをチェックすることが出来、同時に別ウィンドウで開くボタンが表示される…という仕組みになっています。





確かにこれはこれで便利なんですが、表示領域の問題などで初めから別タブで開きたいときもあります。もちろんCtrlを押しながらクリックすれば別ウィンドウで開くわけですが個人的にはマウスだけで操作したかったので、デフォルトでこのボタンを表示しておくようにしてみました。
起動させるトリガーが「今時点で一番最後になっているニュース(175番目)を読み込んだら」になっているけどその数が変更になったらどうすんのとか、問題は色々あるわけですが、ちょうど良いトリガーを見つけられなかったのでとりあえずこれで。