youRoom コメント自動表示

  • /*
     * @title youRoom コメント自動表示
     * @description youRoomのコメントをマウスオーバーで展開します。#youroom
     * @include https://www.youroom.in/*
     * @license MIT License
     * @require
     */
    (function(){
      function getElements(elementList, element, tagName, checkName, checkType, isNest) {
        var elements = element.childNodes;
        var i = 0;
        for (i = 0; i < elements.length; i++) {
          var e = elements.item(i);
          if (isNest) {
            getElements(elementList, e, tagName, checkName, checkType, isNest);
          }
          if (e.tagName == tagName) {
            if ((checkType == 'id' && e.id == checkName) || (checkType == 'in' && e.className.indexOf(checkName) != -1) || e.className == checkName) {
              elementList.push(e);
            }
          }
        }
      }
      function getComment(e){
        var setTarget = e.target.parentNode.parentNode.parentNode.parentNode.parentNode
        e.target.parentNode.innerHTML = 'Reading...';
        var req = new XMLHttpRequest();
        req.open('GET', e.target.href, true);
        req.onreadystatechange = function() {
          if (req.readyState == 4) {
            var res = document.createElement('div');
            res.innerHTML = req.responseText;
            var showList = new Array();
            getElements(showList, res, 'DIV', 'entry_show', 'id', true);
            setTarget.innerHTML = '';
            setTarget.appendChild(showList[0]);
          }
        }
        req.send(null);
      }
      var main = document.getElementById('main');
      var elementList = new Array();
      getElements(elementList , main, 'A', 'jqui_icon_link', '', true);
      var i = 0;
      for (i = 0; i < elementList .length; i++) {
        var e = elementList [i];
        e.addEventListener('mouseover', getComment, true);
      }
    })();
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2010/07/22 21:34:38 - 2010-07-22