Google Readerで背面にタブを開くChrome拡張の開発をやめました

Google Readerの「v」で背面にタブを開くChrome拡張機能の開発をやめました。

理由は

  • タブが二枚開くなどのバグがあったが原因究明に時間を費やしすぎる
  • Chromeのバージョンが同じなのにこのPCと隣のPCで動作が違ったりして萎えた
  • よく考えたらGoogle ReaderだけFirefoxで見ればいい。Firefox全然嫌いじゃなかった

ということで、申し訳ありませんがこれ以上新しいバージョンは出ません。

CRXをダウンロードしてunzipするのが面倒な方のためにPage actionのソースを貼っておきますので、どなたか気が向いたらご利用ください。

/*
 * taken from http://userscripts.org/scripts/show/24955
 */
function simulateClick(node) {
  var event = node.ownerDocument.createEvent("MouseEvents");
  event.initMouseEvent("click",
                      true, true, window, 1, 0, 0, 0, 0,
                      false, false, false, false, 0, null);
  node.dispatchEvent(event);
}

/*
 * original
 * thx to http://sites.google.com/site/ggchromium/ for fixes
 */
document.addEventListener("keypress", function(e){

  var name = e.target.tagName;
  // Do nothing if the target of this event is an edit box
  if (name == "TEXTAREA" || name == "INPUT"){ return; }

  var keycode = (e.keyCode) ? e.keyCode : e.which;
  var k = String.fromCharCode(keycode);
  if (k=="v" && !e.altKey && !e.ctrlKey && !e.metaKey && !e.shiftKey){ // just 'v' and no modifiers
    // Get the current entry node
    var current_entry = document.getElementById('current-entry');

    // Get the url. In Expanded view or List view?
    var card_content = current_entry.getElementsByClassName('card-content')[0]
    if (card_content){
      var url = current_entry.getElementsByClassName('entry-title-link')[0].href;
    } else {
      var url = current_entry.getElementsByClassName('entry-original')[0].href;
    }

    if(!url){ return true; }

    // open the link in background
    chrome.extension.sendRequest({"func":"open_in_background", "url":url});

    // mark the entry as read
    simulateClick(current_entry.childNodes[0]);
    simulateClick(current_entry.childNodes[0]);

    // make sure the event doesn't propate
    e.stopPropagation();
    e.preventDefault();

    return false;
  }
}, true);
Categories: Things I Made |Tagged , , , | Trackback URL |