// PLUGIN_INFO {{{ let PLUGIN_INFO = xml` GoogleSelect グーグルセレクト you can quick select in Google search result page Google検索結果からページ選択を楽にできる 1.0 elzup 1.0 2.0pre `; // }}} (function () { var google_url = 'https:\/\/www.google.co.jp\/search.*'; /* user config */ // 選択状態表示マーカー var SELECT_MARKER_CHAR = '▶'; // マーカー位置微調整 var SELECT_MARKER_REPOSITION_LEFT = '0em'; var SELECT_MARKER_REPOSITION_TOP = '0.3em'; /* hard config */ var GOOGLE_SELECTION_CLASS = 'r'; var GOOGLE_SELECTION_SELECTED_CLASS = 'r-selected'; commands.addUserCommand( ['googleselect'], 'move select in google search result', function (args) { var v = 1; if (args.length && args[0] == 'back') { v = -1; } var $rs = window.content.window.document.getElementsByClassName(GOOGLE_SELECTION_CLASS); var pre = -1; for (var i = 0; i < $rs.length; i++) { if ($rs[i].className.indexOf(GOOGLE_SELECTION_SELECTED_CLASS) != -1) { pre = i; break; } } // ターゲット表示スタイル var $pointer = window.content.window.document.createElement('span'); $pointer.style.color = 'blue'; $pointer.id = 'google-select-pointer'; $pointer.style.position = 'absolute'; $pointer.style.marginTop = SELECT_MARKER_REPOSITION_TOP; $pointer.style.left = SELECT_MARKER_REPOSITION_LEFT; $pointer.innerHTML = SELECT_MARKER_CHAR; if (pre != -1) { // 現在の選択状態削除 $rs[pre].className = GOOGLE_SELECTION_CLASS; // $rs[pre].style.borderLeft = "none"; $rs[pre].childNodes[0].blur(); var $e = window.content.window.document.getElementById('google-select-pointer'); $e.parentNode.removeChild($e); } else if (v == -1) { pre = $rs.length; } if ((pre == 0 && v == -1) || (pre == $rs.length - 1 && v == 1)) { return; } // $rs[pre + v].style.borderLeft = "solid 5px blue"; $rs[pre + v].className = $rs[pre + v].className + " " + GOOGLE_SELECTION_SELECTED_CLASS; $rs[pre + v].childNodes[0].focus(); $rs[pre + v].parentNode.parentNode.insertBefore($pointer, $rs[pre + v].parentNode.parentNode.firstChild); }, { literal: 0, bang: true, count: true, argCount: '?', options: [], completer: function (context, args) { context.title = ['value', 'description']; context.completions = [ ['front', 'move front item'], ['back', 'move back item'] ]; } }, true // replace ); })(); // vim:sw=2 ts=2 et si fdm=marker: