您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
bookmater support script
// ==UserScript== // @name nice down // @namespace http://looxu.blogspot.com/ // @description bookmater support script // @include http://bookmeter.com/bl/* // @version 1.0.3 // ==/UserScript== (function(_doc, _win){ var _lists = [], _iz = 0, _izlast = 0; function changeAndScroll( node ){ var ot = node.offsetTop; node.className += " keySelect"; node.style.backgroundColor = '#f8ffec'; _win.scrollTo( 0, ot ); } function addCSS(){ var css = (function(){ }).toString().replace(); } function addKeyBind( keyChar, func, eve ){ var t=eve.target, 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(); } } function downlist(){ for( var i=0;i<_iz;i++){ if( update( _lists[i], _lists[i+1], null ) ){ break; } } } function uplist(){ for( var i=0;i<_iz;i++){ if( update( _lists[i], _lists[i-1], _lists[_izlast] ) ){ break; } } } function update( targetNode, destNode, otherNode ){ var cn = targetNode.className; if( /keySelect/.test(cn) ){ targetNode.className = cn.replace(/ keySelect/,''); targetNode.style.backgroundColor = ''; var move = (destNode) ? destNode : otherNode; // last node if( !move ){ next(); return true; } changeAndScroll( move ); return true; } return false; } function nicedown(){ var nodes = _doc.querySelectorAll('.keySelect .log_list_info span a'), i=0, iz = nodes.length; for(;i<iz;i++){ if( /nice/.test(nodes[i].href) ){ var text = nodes[i].href.replace(/javascript:/,''); eval( text ); break; } } downlist(); } function next(){ var now = _doc.querySelector('.page_navis span.now_page'), next = now.nextSibling.firstChild.href; location.href = next; } function niceshow(){ var logs = _doc.querySelectorAll('.log_list_comment'), stars = _doc.querySelectorAll('.log_list_info .nice_star_list'), cods = _doc.querySelectorAll('.log_list_info span a.nice_button_sprite'); i=0, iz = logs.length, log = null, star = null, code = null, text = "", results = [], evalCodes = []; var offset = 10, staroffset = 2; for(;i<iz;i++){ log = logs[i]; star = stars[i]; code = cods[i].href.replace(/javascript:/,''); text = log.textContent.replace(/\s/g,''); startext = star.textContent.replace(/\s/g,''); if( text.length < offset ){ results.push({ 'log': log, 'star': star, 'code' : code }); }else if( startext.length < staroffset ){ results.push({ 'log': log, 'star': star, 'code' : code }); } else if( text.indexOf("★") > -1 || text.indexOf("☆") > -1 ) { results.push({ 'log': log, 'star': star, 'code' : code }); } else if( text.indexOf("http") > -1 ) { results.push({ 'log': log, 'star': star, 'code' : code }); } else if( text.indexOf("後で") > -1 ) { results.push({ 'log': log, 'star': star, 'code' : code }); } else { evalCodes.push(code); } } var j=0, jz = results.length, result = null, div=document.createElement("div"), wrapper = null, chkbox = null, label = null; div.id = "work_nice_down"; for(;j<jz;j++){ result = results[j]; wrapper = div.appendChild(document.createElement("div")); wrapper.style.cssText = "padding: 4px;border-bottom: 1px solid #111;margin-bottom: 8px;"; chkbox = wrapper.appendChild(document.createElement("input")); chkbox.type = "checkbox"; chkbox.checked = true; chkbox.id = "nice_work" + j; label = wrapper.appendChild(document.createElement("label")); label.setAttribute("for" ,"nice_work" + j); label.appendChild(document.createTextNode("チェック")); wrapper.appendChild( result.log.cloneNode(true) ); wrapper.appendChild( result.star.cloneNode(true) ); wrapper.appendChild(document.createElement("br")); chkbox.setAttribute("data-code",result.code); (function(wrap,chkb){ wrap.addEventListener("click", function(){ var chkflg = chkb.checked ? false : true; chkb.checked = chkflg; this.style.backgroundColor = chkflg ? "#ffffff" : "#bbbbbb"; this.style.color = chkflg ? "#333333" : "#ffffff"; }, false ); })(wrapper,chkbox); } div.style.cssText = "padding: 8px;"; var submit = div.appendChild(document.createElement("input")); submit.type="submit"; submit.addEventListener("click", function(eve){ eve.preventDefault(); var chks = document.querySelectorAll("#work_nice_down input[type=checkbox]"), l=0, lz = chks.length, chk = null; for(;l<lz;l++){ chk = chks[l]; if( !chk.checked ){ mycode = chk.getAttribute("data-code"); evalCodes.push(mycode); } } var k = 0, kz = evalCodes.length; for(;k<kz;k++){ eval(evalCodes[k]); } document.body.removeChild(document.getElementById("work_nice_down")); next(); }, false ); document.body.appendChild(div); div.style.position = "absolute"; div.style.top = (50 + document.documentElement.scrollTop) + 'px'; div.style.right = "0"; div.style.background = "#ffffff"; div.style.width = "480px"; div.style.border = "1px solid #111"; div.style.zindex= "20000"; div.style.overflowY = "scroll"; } function init(){ _lists = _doc.querySelectorAll('.log_list_box'); _iz = _lists.length; _izlast = _iz-1; if( _lists[0] ){ changeAndScroll( _lists[0] ); } _win.addEventListener('keypress', function(eve){ addKeyBind( 'j', downlist, eve); addKeyBind( 'k', uplist, eve ); addKeyBind( 'l', nicedown,eve ); addKeyBind( 's', niceshow ,eve ); addKeyBind( 'n', next,eve ); }, false ); } init(); //_doc.addEventListener('DOMContentLoaded', init, false ); })(document, window);