Greasy Fork

Greasy Fork is available in English.

dm5动漫屋 & dmzj动漫之家 键盘导览

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

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

// ==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			http://greasyfork.icu/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
// ==/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;

	}

})();