はてなハイクでプロフィールを表示

  • /*
     * @title はてなハイクでプロフィールを表示
     * @description はてなハイクでユーザーアイコンやユーザー名の上にマウスポインタを乗せると、右サイドバーにプロフィールを表示します。
     */
    
      var container = document.getElementById('rightbar');
      container.style.overflow = 'visible';
      
      var div;
    
    window.onmouseover = function (ev) {
      var target = ev.target;
      while (!target.tagName || target.tagName.toUpperCase() != 'A') {
        target = target.parentNode;
        if (!target) return;
      }
      var url = target.href;
      if (!url) return;
      var m = url.match(/^http:\/\/[^\/]+\/(?:touch\/|mobile\/)?([^/]+)\/$/);
      if (!m) return;
    
      var entry = target;
      while (entry.parentNode) {
        entry = entry.parentNode;
        if (Ten.DOM.hasClassName(entry.parentNode, 'entry')) {
          break;
        }
      }
    
      var profileURL = '/' + m[1] + '/profile?only=body';
      var xhr = new XMLHttpRequest();
      xhr.open('GET', profileURL, true);
      xhr.onreadystatechange = function () {
        if (!xhr.readyState == 4) return;
        if (xhr.status >= 400) return;
    
        div = div || document.createElement('div');
        div.innerHTML = xhr.responseText;
        div.style.position = 'absolute';
        div.style.right = 0;
        div.style.width = '181px';
        div.style.top = (entry.offsetTop - container.offsetTop) + 'px';
        container.appendChild(div);
      };
      xhr.send(null);
    };
    
    /*
    
    Copyright 2011 Wakaba <w@suika.fam.cx>.
    You are granted a license to use, reproduce and create derivative works of this software.
    
    */
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2011/03/04 09:20:35 - 2011-03-04