Tumblrのショートカットキーを置換する
dashboardでいちいちoption+R/Eキーでrblgするのが指的に辛いので,ChromeのUserScriptでR/Eキー単体でrblgできるようにした。ソースは下記から。
KeyboardEvent#stopPropagationでイベントの伝播を止めつつ,似非KeyboardEventを生成して,Tumblr側のjsで定義されているkeydownのイベントハンドラに渡してやるという実装になっている。
バッドノウハウっぽいポイントとしては,ウェブページのコンテキストで関数を実行する下記の関数と……
var executeBrowserContext = function(f) {
var code = f.toString();
var script = document.createElement("script");
script.textContent = '(' + code + ')();';
document.body.appendChild(script);
};Chrome向けにむりやりKeyboardEventインスタンスを生成する下記の関数。
var createEvent = function(charCode, optionKey) {
var e = document.createEvent('KeyboardEvent');
Object.defineProperty(e, 'charCode', {
get: function() { return charCode; }
});
Object.defineProperty(e, 'shiftKey', {
get: function() { return optionKey; }
});
Object.defineProperty(e, 'altKey', {
get: function() { return optionKey; }
});
return e;
};そんな感じの怪しい実装なのだが,とりあえず手元のChrome(Version: 25.0.1364.99)では動いている。
追記(2013-03-16T15:09:00+09:00)
LキーでのLikeトグルが動かない不具合があったので,スクリプトを修正した。