dm5 动漫屋 键盘导览

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

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

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==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 },
		clearFnKey = function() {
			fnKey.shift = fnKey.ctrl = fnKey.alt = fnKey.meta = false;
		}
	window.onfocus = clearFnKey;
	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();
		}
	});
})();