// ==UserScript== // @name dm5.com & dmzj.com - navigate with keyboard // @name:zh-TW dm5動漫屋 & dmzj動漫之家 鍵盤導覽 // @name:zh-CN dm5动漫屋 & dmzj动漫之家 键盘导览 // @description:en [a / ←]prev page,[d / →]next page,[w / ↑]next chapter,[s / ↓]prev chapter,[q]newer comments,[e]older comments // @description:zh-TW [a / ←]前一頁,[d / →]下一頁,[w / ↑]新一章,[s / ↓]舊一章,[q]新一頁留言,[e]舊一頁留言 // @description:zh-CN [a / ←]前一页,[d / →]下一页,[w / ↑]新一章,[s / ↓]旧一章,[q]新一页留言,[e]旧一页留言 // @author Evan Tseng // @version 0.96 // @namespace https://greasyfork.org/zh-TW/users/393133-evan-tseng // @match *.dm5.com/* // @match *.dmzj.com/* // @match *.dmzj1.com/* // @grant none // @description [a / ←]prev page,[d / →]next page,[w / ↑]next chapter,[s / ↓]prev chapter,[q]newer comments,[e]older comments // @downloadURL none // ==/UserScript== (function() { 'use strict'; var host = location.hostname; if(host.indexOf("dm5.com") >= 0) host="dm5"; else if(host.indexOf("dmzj.com") >= 0 || host.indexOf("dmzj1.com") >= 0) host="dmzj"; var fnKey = { shift: false, ctrl:false, alt:false, meta:false }; window.onfocus = function() { fnKey.shift = fnKey.ctrl = fnKey.alt = fnKey.meta = false; } document.addEventListener("keydown", function(e) { e = e || window.event; switch(e.which || e.keyCode) { case 16: // shift fnKey.shift = true; break; case 17: // ctrl fnKey.ctrl = true; break; case 18: // alt fnKey.alt = true; break; case 91: // left Meta case 93: // right Meta fnKey.meta = true; break; } }); document.addEventListener("keyup", function(e) { e = e || window.event; switch(e.which || e.keyCode) { case 16: // shift fnKey.shift = false; break; case 17: // ctrl fnKey.ctrl = false; break; case 18: // alt fnKey.alt = false; break; case 91: // left Meta case 93: // right Meta fnKey.meta = false; break; } }); switch(host) { case "dm5": document.addEventListener("keydown", async function(e) { if(document.querySelector("input:focus, textarea:focus") || (fnKey.shift | fnKey.ctrl | fnKey.alt | fnKey.meta)) return; var PrevC, NextC, PrevP, NextP, ppa=document.querySelectorAll(".view-paging>.container>a"); for(var i in ppa) { switch(ppa[i].innerText) { case "上一章": PrevC=ppa[i]; break; case "下一章": NextC=ppa[i]; break; case "上一页": PrevP=ppa[i]; break; case "下一页": NextP=ppa[i]; break; } } var actP=document.querySelector(".page-pagination ul li a.active"); if(actP) actP=parseInt(actP.innerText); e = e || window.event; switch(e.which || e.keyCode) { case 38: // up case 87: // 'w' if(NextC) NextC.click(); break; case 40: // down case 83: // 's' if(PrevC) PrevC.click(); break; case 37: // left case 65: // 'a' $('#last-mask').hide();$('#last-win').hide(); if(PrevP) PrevP.click(); else if(actP>1) YingdmList.self.changepager(actP-1); break; case 39: // right case 68: // 'd' $('#last-mask').hide();$('#last-win').hide(); if(NextP) NextP.click(); else if(actP) YingdmList.self.changepager(actP+1); break; case 27: // esc $('#last-mask').hide();$('#last-win').hide(); break; case 69: // 'e' $('#last-mask').hide();$('#last-win').hide(); var NextI=document.querySelector(".view-comment-main .top .page span.current").nextElementSibling; if(NextI) NextI.click(); break; case 81: // 'q' $('#last-mask').hide();$('#last-win').hide(); var PrevI=document.querySelector(".view-comment-main .top .page span.current").previousElementSibling; if(PrevI) PrevI.click(); } }); break; case "dmzj": document.addEventListener("keydown", function(e) { if(document.querySelector("input[type='text']:focus, input[type='password']:focus, textarea:focus")) return; var elm=null; e = e || window.event; try { switch(e.which || e.keyCode) { case 38: // up case 87: // 'w' elm=document.querySelector("#next_chapter, a.btm_chapter_btn.fr"); break; case 40: // down case 83: // 's' elm=document.querySelector("#prev_chapter, a.btm_chapter_btn.fl"); break; case 37: // left elm=document.querySelector(".pages a.pselected, .page a.cu"); if(elm) do elm=elm.previousElementSibling; while(elm.nodeName == "#text"); break; case 65: // 'a' if(elm=document.querySelector("#center_box>a.img_land_prev, .comic_wraCon>a.img_land_prev")) break; else { elm=document.querySelector(".pages a.pselected, .page a.cu"); if(elm) do elm=elm.previousElementSibling; while(elm.nodeName == "#text"); } break; case 39: // right elm=document.querySelector(".pages a.pselected, .page a.cu"); if(elm) do elm=elm.nextElementSibling; while(elm.nodeName == "#text"); break; case 68: // 'd' if(elm=document.querySelector("#center_box>a.img_land_next, .comic_wraCon>a.img_land_next")) break; else { elm=document.querySelector(".pages a.pselected, .page a.cu"); if(elm) do elm=elm.nextElementSibling; while(elm.nodeName == "#text"); } break; case 27: elm=document.querySelector("#close_btn.part_collection_bnt"); } if(elm) elm.click(); } catch(e) { console.log(e); } }); break; } })();