Greasy Fork

dm5.com动漫屋 - 键盘导览

[a / ←]前一页,[d / →]下一页,[w / ↑]新一章,[s / ↓]旧一章,[q]新一页留言,[e]旧一页留言

目前为 2020-01-20 提交的版本。查看 最新版本

// ==UserScript==
// @name         dm5.com - navigate with keyboard
// @name:zh-TW dm5.com動漫屋 - 鍵盤導覽
// @name:zh-CN dm5.com动漫屋 - 键盘导览
// @version      0.9
// @description [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
// @match        www.dm5.com/*
// @run-at       document-start
// @grant        none
// @namespace https://greasyfork.org/users/393133
// ==/UserScript==

(function() {
	'use strict';

	document.addEventListener("keydown", function(e) {
		if(document.querySelector(":focus")) 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'
				if(PrevP) PrevP.click();
				else if(actP>1) YingdmList.self.changepager(actP-1);
				break;
			case 39: // right
			case 68: // 'd'
				if(NextP) NextP.click();
				else if(actP) YingdmList.self.changepager(actP+1);
				break;
			case 27: // esc
				document.querySelector('#last-mask').style.display="none";
				document.querySelector('#last-win').style.display="none";
				break;
			case 69: // 'e'
				var NextI=document.querySelector(".view-comment-main .top .page span.current").nextSibling;
				if(NextI) NextI.click();
				break;
			case 81: // 'q'
				var PrevI=document.querySelector(".view-comment-main .top .page span.current").previousSibling;
				if(PrevI) PrevI.click();
				break;
		}
	});
})();