2009年10月25日日曜日

ピアプロをキーボードで快適操作するUserScript書いたよ

このエントリーをはてなブックマークに追加
ま た そ の ネ タ か

はい。またそのネタです。
コードは以下のとおり。
後で、userscriptsへ投稿します。
例のごとくOperaでしか動作確認していません。
qキーで前のイラスト
wキーで次のイラスト
bキーでブックマーク
先頭のページで多分動きがオカシクなるけど、気にしない(マテ


// ==UserScript==
// @name piapro
// @namespace http://looxu.blogspot.com/
// @include http://piapro.jp/content/*
// @author Arc Cosine
// @version 1.0
// ==/UserScript==
// License Public Domain
(function(){
var PIAPRO = {
init : function(){
window.addEventListener('keypress', function(e){
PIAPRO.addKeyBind( 'b', function(){ PIAPRO.bookMark(); }, e);
PIAPRO.addKeyBind( 'q', function(){ PIAPRO.moveLink(0); }, e);
PIAPRO.addKeyBind( 'w', function(){ PIAPRO.moveLink(1); }, e);
},false);
},
addKeyBind : function( keyChar, func, eve ){
var t=eve.target;
var n=t.tagName.toLowerCase();
if( t.nodeType != 1 || n == 'input' || n == 'textarea' ){
return;
}
var pressKey = eve.which;
keyChar = (keyChar=='Enter') ? 13 : keyChar.charCodeAt(keyChar);
if( pressKey == keyChar ){
eve.preventDefault(); //Stop Default Event
func.apply();
}
},
bookMark : function(){
var url = 'http://piapro.jp/bookmark/';
var id = location.href.match(/content\/(.*)/)[1];
var cont_id = document.getElementsByName('content_type_id')[0].value;
var param = 'mode=add&id=' + id + '&content_type_id=' + cont_id + '&folder_id=0';
var xhr = new XMLHttpRequest();
xhr.open( 'POST', url, false );
xhr.onreadystatechange = function(){
if( xhr.status == 200 && xhr.readyState == 4 ){
location.reload();
}
}
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
xhr.send( param );
},
moveLink : function(mode){
var imgs = document.querySelectorAll('#main_in680 div.mt10 div div a img');
var target = [];
for( var i=0, l=imgs.length; i<l; i++ ){
if( /gen/.test(imgs[i]['src']) ){
target.push(imgs[i].parentNode);
}
}
var link = target[mode];
if( typeof link != 'undefined' ){
location.href = link;
}
}
};
PIAPRO.init();
})();

0 件のコメント :

コメントを投稿