Hatena::ブログ(Diary)

TrashSUITE このページをアンテナに追加 RSSフィード Twitter

2008.11.25(Tue)

はてなの外でもはてなスターをプロフィールアイコンに置き換える GreasemonkeyScript

| 03:31 |  はてなの外でもはてなスターをプロフィールアイコンに置き換える GreasemonkeyScriptを含むブックマーク  はてなの外でもはてなスターをプロフィールアイコンに置き換える GreasemonkeyScriptのブックマークコメント

id:os0x さんの GreasemonkeyScript を便利に使わせて頂いているのだけど,はてな以外のサイトでも Hatena Star Everywhere と組み合わせて幸せになりたくなったので,ちょろっといじってみた

いじったといっても,Hatena Star Everywhere が,script タグを appendChild してむりくり HatenaStar.js を呼んでいて,unsafeWindow.Hatena.* の生成にどうしてもタイムラグが発生してしまうため,setInterval を使って unsafeWindow.Hatena.* の生成完了を待つようにしただけで,その他のコードはどう見てもオリジナルパクリです,本当にありがとうございました

インストールこちらから

// ==UserScript==
// @name           Replace star icon anywhere for Hatena Star
// @namespace      http://www.trashsuite.org/
// @include        http://*
// @include        https://*
// @see            http://d.hatena.ne.jp/trashsuite/20081125/1227637917
// @see            http://d.hatena.ne.jp/os0x/20080730/1217393400
// @version        1.0.3
// ==/UserScript==
location.href = 'javascript:(' + function() {
(function() {
  var w = typeof unsafeWindow != 'undefined' ? unsafeWindow : window
  var count = 0
  var t = setInterval(function() {
    if(w.Hatena && w.Hatena.Star && w.Hatena.Star.Entry) {
      clearInterval(t)

      var show_name       = w.Hatena.Star.Star.prototype.showName
      var bind_star_entry = w.Hatena.Star.Entry.prototype.bindStarEntry

      w.Hatena.Star.Star.prototype.showName = function(e) {
        this.screen_name = this.name
        show_name.call(this, e)
      } // showName

      w.Hatena.Star.Entry.prototype.bindStarEntry = function(se) {
        se.stars = se.stars.map(function(star) {
          var image = w.Hatena.User.getProfileIcon(star.name)
          image.alt = star.name
          star.img  = image
          return star
        })

        bind_star_entry.call(this, se)
      } // bindStarEntry
    }
    count++; if(count == 10) {clearInterval(t)}
  }, 10) // setInterval
})()
}.toString() + ')()'
トラックバック - http://d.hatena.ne.jp/trashsuite/20081125/1227637917