Google Readerで今読んでいる記事をbキーではてなブックマークする

Google Readerはてなブックマークを組み合わせて便利にするGreasemonkeyスクリプトその2。

インストールする

  • (2006.10.14 @includeにhttpsを追加, リンク先変更)
  • (2006.10.14 Altキーのチェックを追加)
// ==UserScript==
// @name           GR+?BKey
// @namespace      http://d.hatena.ne.jp/nozom/
// @description    Adds short-cut key to open Hatena Bookmark in Google Reader
// @include        http://www.google.com/reader/view/*
// @include        https://www.google.com/reader/view/*
// ==/UserScript==

(function() {
  function gm_open_hatena_bookmark () {
    var current_entry = document.getElementById('current-entry');
    var a = current_entry.getElementsByTagName('a')[0];
    var h2 = current_entry.getElementsByTagName('h2')[0];
    var title = '';
    if (h2.firstChild == a) {
      title = a.firstChild.textContent;
    } else {
      title = h2.textContent;
    }
    var link = 'http://b.hatena.ne.jp/add?mode=confirm&is_bm=1&title=' + escape(title) + '&url=' + escape(a.href);
    window.open(link);
    // if you prefer to open a tab in background, you can use this alternative.
    // GM_openInTab(link);
  }

  function GRT_key(event) {
    var element = event.target;
    elementName = element.nodeName.toLowerCase();
    var typing = false;
    if (elementName == "input") {
      typing = (element.type == "text" || element.type == "password");
    } else {
      typing = (elementName == "textarea");
    }
    if (typing) return true;
    if (String.fromCharCode(event.which) == "b" && !event.ctrlKey && !event.altKey) {
      gm_open_hatena_bookmark();
      try {
        event.preventDefault();
      } catch (e) {
      }
      return false;
    }
    return true;
  }

  document.addEventListener("keypress", GRT_key, false);
})();

キー入力の扱い方はclmemo@aka: Google Reader で新しいタブを開く Greasemonkey スクリプトを参考にした。

それと、Google Readerにはてなブックマーク件数とブックマーク用アイコンを表示するGreasemonkeyスクリプト(名前長すぎ)の方で細かいバグが見つかったので修正した。