dm5 动漫屋 键盘导览

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

当前为 2020-07-14 提交的版本,查看 最新版本

// ==UserScript==
// @name         dm5.com - navigate with keyboard
// @name:zh-TW   dm5 動漫屋 鍵盤導覽
// @name:zh-CN   dm5 动漫屋 键盘导览
// @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.93
// @namespace    https://greasyfork.org/zh-TW/users/393133-evan-tseng
// @match        *.dm5.com/*
// @grant        none
// @description [a / ←]prev page,[d / →]next page,[w / ↑]next chapter,[s / ↓]prev chapter,[q]newer comments,[e]older comments
// ==/UserScript==

(function() {
	'use strict';

	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;
		}
	});

	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'
				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
				$('#last-mask').hide();
				$('#last-win').hide();
				break;
			case 69: // 'e'
				var NextI=document.querySelector(".view-comment-main .top .page span.current").nextElementSibling;
				if(NextI) NextI.click();
				break;
			case 81: // 'q'
				var PrevI=document.querySelector(".view-comment-main .top .page span.current").previousElementSibling;
				if(PrevI) PrevI.click();
		}
	});
})();