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);