crowy 更新表示

  • /*
     * @title crowy 更新表示
     * @description crowy の更新を確認して未読の件数をタイトルに表示します #crowy
     * @include http://www.crowy.net*
     * @license MIT License
     * @require 
     */
    
    (function(){
      var timer = null;
    
      function getElements(element, selector) {
        var list = new Array();
        list.push(element);
        return selectList(list, selector);
      }
    
      function selectList(list, name) {
        var retList = new Array();
        var i;
        for (i = 0; i < list.length; i++) {
          var element = list[i];
          if (element.nodeType == 1) {
            var e = selectElement(element, name);
            if (e != null) {
              retList.push(e);
            }
          }
          retList = retList.concat(selectList(element.childNodes, name));
        }
        return retList;
      }
    
      function selectElement(element, name) {
        var tagName;
        var className;
        var idName;
        if (name.indexOf('.') != -1) {
          tagName = name.substring(0, name.indexOf('.'));
          className = name.substring(name.indexOf('.') + 1, name.length);
        } else if (name.indexOf('#') != -1) {
          tagName = name.substring(0, name.indexOf('#'));
          idName = name.substring(name.indexOf('#') + 1, name.length);
        } else {
          tagName = name;
        }
        if (element.tagName == tagName.toUpperCase() &&
            (idName == null || element.id == idName) &&
            (className == null || element.className.indexOf(className) != -1)
            ) {
          return element;
        }
        return null;
      }
    
      function reloadCount(){
        var title = document.title;
        var cntIndex = 0;
        if ((cntIndex = title.indexOf(')')) != -1) {
          document.title = title.substring(cntIndex+1);
        }
        var list = getElements(document.getElementById('tabs'), 'div.new-count');
        var countList = new Array();
        var i;
        for (i = 0; i < list.length; i++) {
          var s = list[i].innerHTML;
          if (s != '0' && s != '') {
            countList.push(s);
          }
        }
        if (countList.length != 0) {
          document.title = '(' + countList.join('/') + ')' + document.title;
        }
      }
    
      reloadCount();
    
      var elementList = getElements(document.getElementById('tabs'), 'div.new-count');
      var i = 0;
      for (i = 0; i < elementList .length; i++) {
        var e = elementList[i];
        e.addEventListener('click', reloadCount, true);
      }
      
      timer = setInterval(reloadCount, 60000);
    
    })();
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2010/11/22 10:09:27 - 2010-11-22
  2. 2010/11/18 14:31:15 - 2010-11-18
  3. 2010/11/18 14:11:04 - 2010-11-18
  4. 2010/11/18 14:06:38 - 2010-11-18