Improved EH Reader

Inspired by Handy ExHentai and ExHentai - Preload next page. Simplifies the reader layout and preloads the next image. Preloading improved to not use an iframe.

2022-02-11 기준 버전입니다. 최신 버전을 확인하세요.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

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

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name          Improved EH Reader
// @namespace     karoo
// @version       2022.02.11
// @description   Inspired by Handy ExHentai and ExHentai - Preload next page. Simplifies the reader layout and preloads the next image. Preloading improved to not use an iframe.
// @match         *://e-hentai.org/s/*
// @match         *://exhentai.org/s/*
// @run-at        document-end
// @grant         unsafeWindow
// @noframes
// ==/UserScript==

function id(id) {return document.getElementById(id);}
if (typeof unsafeWindow === "undefined"){unsafeWindow = window;}
if (window.top !== window.self) {return;}

// hide top panel and front page link
id("i1").firstElementChild.style.display = "none";
id("i2").style.display = "none";
document.getElementsByClassName("dp")[0].style.display = "none";

// hide frame and fix margins
id("i1").style.background = "none";
id("i1").style.border = "none";
id("i1").style.margin = "0px auto 0px";
id("i7").style.margin = "-5px auto 0px";

// preload next image without iframe
var preload = new Image();
function preloadNext() {
    if (history.length <= 1 || id("next").href == window.location.href) {return;} // don't preload if on last page or new tab
    var lookahead = new XMLHttpRequest();
    lookahead.open("GET", id("next").href, false);
    lookahead.send();
    var doc = document.implementation.createHTMLDocument('lookahead');
    doc.documentElement.innerHTML = lookahead.responseText;
    var nextImage = doc.getElementById("img").src;
    preload.src = nextImage;
}
unsafeWindow.preloadNext = preloadNext;

// preload next image after navigation
var script = document.createElement("script");
script.type = "text/javascript";
script.innerHTML =
    "var uweo = update_window_extents;" +
    "update_window_extents = function() {" +
    " 	uweo();" +
    "	document.getElementById('img').addEventListener('load', function() {" +
    "       preloadNext()" +
    "	});" +
    "}";
document.head.appendChild(script);