livedoor Readerをホイール操作ですいすい読むためのGreasemonkey
もともと#headerの部分でマウス操作ができるけど、コストの高い「クリック」に次の記事への移動が割り当てられているため、どんどん記事を流し読みしていくような使い方だと指が疲れる。今になってクリック→クリックしっぱなしで自動スクロールできることを知った。また、普段#header部分は非表示にしているため、そもそも使えない。
なので、#headerの下の部分(#menu、#control)でのホイール操作で、前後の記事へ移動するようにするGreasemonkeyスクリプトを作った。また、左クリックで元記事を開く、右クリックでgキーを押したことにする(LDR Full Feed用)ようにした。
// ==UserScript== // @name LDR_mouser // @namespace http://d.hatena.ne.jp/rikuba/ // @include http://reader.livedoor.com/reader/* // ==/UserScript== (function(){ var w = unsafeWindow; var _onload = w.onload; function dispatchKeyEvt(target, key) { var keyEvt = document.createEvent('KeyboardEvent'); keyEvt.initKeyEvent('keydown', true, true, null, false, false, false, false, keyEvt[key], 0); (target || document).dispatchEvent(keyEvt); } var onload = function() { with(w) { function addEvents(nodes, events) { if (!nodes.hasOwnProperty('0') || typeof nodes.length !== 'number') nodes = [nodes]; for (var i = 0, I = nodes.length, node; i < I; ++i) { node = nodes[i]; for (var type in events) { if (!events.hasOwnProperty(type)) return; addEvent(node, type, events[type], false); } } } addEvents([$('menu'), $('control')], { DOMMouseScroll: function(evt) { if (evt.detail > 0) Control.go_next(); else Control.go_prev(); }, click: function(evt) { if (/A/i.test(evt.target.tagName)) return; Control.view_original(); }, contextmenu: function(evt) { if (/A/i.test(evt.target.tagName)) return; evt.preventDefault(); dispatchKeyEvt(this, 'DOM_VK_G'); } }); }}; w.onload = function(){ _onload(); onload(); } })();