読者です 読者をやめる 読者になる 読者になる

FLYING

〈全日本・紀文豆乳飲料シリーズ「麦芽コーヒー」の500ミリリットルパックを扱う小売店が少ないことに遺憾の意を表明する会〉活動記録

Tumblrのショートカットキーを置換する

web javascript

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トグルが動かない不具合があったので,スクリプトを修正した。