NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Целюллоза(zelluloza.ru) как надо // @namespace zelluloza.ru.uo1.net // @description Просто нормальная читалка для целлюлозы. Обычное отображение текста в браузере, без всяких постраничных глупостей. // @include /^https?:\/\/(www\.)?zelluloza\.ru(/.*|)$/ // @version 1.03 // @grant none // @updateURL https://openuserjs.org/meta/azazar/Целюллоза(zelluloza.ru)_как_надо.meta.js // ==/UserScript== (function() { function showReader() { var disableCopyPaste = false; if (typeof maxpg === 'undefined' || maxpg === 0) { alert("Это не страница с книгой"); return; } var imgInsertInterval; var dc = document; var bd = dc.body; var cntr = dc.createElement('span'); if (disableCopyPaste) { cntr.oncontextmenu = function() { event.preventDefault(); } } //var bd_ovf = bd.style.overflow; cntr.rs = function(c) { c = c * cntr.clientHeight; var scrollTo = cntr.scrollTop + c; if (scrollTo < 0) { scrollTo = 0; } else if (scrollTo > cntr.scrollHeight) { scrollTo = cntr.scrollHeight; } if (cntr.scrollTop === scrollTo) { return; } /*var scrollFrom = cntr.scrollTop; var steps = Math.abs(scrollTo - cntr.scrollTop); var speed = 4; for(var step = 1; step <= steps; step+=5) { var f = step/steps; var top = Math.round(scrollFrom * (1-f) + scrollTo * f); setTimeout(function() { cntr.scrollTop = top; }, step*speed); console.log("t:",step*speed); } setTimeout(function() {*/ cntr.scrollTop = scrollTo; /*}, steps*speed + 1);*/ }; function mykeypress(evt) { var keyId = evt.key ? evt.key : evt.keyIdentifier; if (keyId === "Down" || keyId === "DownArrow" || keyId === "ArrowDown") { cntr.rs(0.1); } else if (keyId === "Up" || keyId === "UpArrow" || keyId === "ArrowUp") { cntr.rs(-0.1); } else if (keyId === "PageUp") { cntr.rs(-0.9); } else if (keyId === "PageDown" || keyId === "U+0020" || keyId === " ") { cntr.rs(0.9); } else if (keyId === "Home") { cntr.rs(-100500); } else if (keyId === "End") { cntr.rs(100500); } else { console.log(keyId); return; } evt.preventDefault(); evt.stopPropagation(); } cntr.onkeypress = mykeypress; function closeClear() { if (imgInsertInterval !== undefined) { clearInterval(imgInsertInterval) } //bd.style.overflow = bd_ovf; bd.removeChild(cntr); window.removeEventListener("keydown", mykeypress); } var btnsBefore = null; function appendCloseBtn() { var input = dc.createElement('input'); input.setAttribute('type', 'button'); input.value = 'Закрыть'; input.onclick = function(evt) { closeClear(); evt.preventDefault(); }; cntr.appendChild(input); if (btnsBefore === null) { cntr.appendChild(btnsBefore = dc.createElement('br')); } return input; } cntr.setAttribute('style', 'max-width: 30em; margin: 0 auto 0 auto; font-size: 2em; box-shadow: 0 0 10px rgba(0,0,0,0.5);' + 'z-index: 999; overflow: scroll; padding: 1em 1em 1em 1em; background: #ffffff; display: block; position:fixed; top: 0px; left: 0px; right: 0px; bottom: 0px' + (disableCopyPaste ? '; -webkit-touch-callout: none;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;' : '')); appendCloseBtn(); var clseBtn2 = appendCloseBtn(); /* <input type="button" class="bluebtn" value="След. фрагмент" onclick="location.replace('/books/1453/8168/#page');"> */ var nextLink = dc.querySelector("input[type='button'][value='След. >']"); if (nextLink !== null) { var nextBtn = dc.createElement('input'); nextBtn.setAttribute('type', 'button'); nextBtn.setAttribute('value', 'След. фрагмент'); nextBtn.onclick = function() { nextLink.click(); }; cntr.appendChild(nextBtn); } var imgSrcs = []; if (protectionview && doprote === 2) { var btnInsertBefore; cntr.appendChild(dc.createTextNode('Для изменения размера шрифта - изменяйте ширину окна браузера.')); cntr.appendChild(btnInsertBefore = dc.createElement('br')); for (var pgIdx = 0; pgIdx < maxpg; pgIdx += pagessize) { var actn; (function() { var src = 'http://zelluloza.ru/get/' + btoa(bookid + ':' + chapterid + ':' + pagessize + ':' + pgIdx); actn = function() { var img = dc.createElement('img'); img.setAttribute('width', '100%'); if (window.imagesStyle) { img.setAttribute('style', window.imagesStyle); } else { /*var f = 'brightness(2) contrast(4);'; img.setAttribute('style', '-webkit-filter: '+f+'; filter: '+f+';');*/ } if (disableCopyPaste) { img.onclick = img.ondragstart = img.oncontextmenu = function(evt) { evt.preventDefault(); }; } img.src = src; cntr.insertBefore(dc.createElement('br'), clseBtn2); cntr.insertBefore(img, clseBtn2); }; })(); if (pgIdx < 10) { actn(); } else { imgSrcs.push(actn); } } var loadPageBtn; function loadPage() { if (imgSrcs.length > 0) { var a = imgSrcs.shift(); a(); } if (imgSrcs.length === 0) { clearInterval(imgInsertInterval); imgInsertInterval = undefined; cntr.removeChild(loadPageBtn); } } imgInsertInterval = setInterval(loadPage, 20000 + Math.round(Math.random() * 10000)); loadPageBtn = dc.createElement('input'); loadPageBtn.setAttribute('type', 'button'); loadPageBtn.setAttribute('value', 'Загрузить страницу'); cntr.insertBefore(loadPageBtn, btnInsertBefore); loadPageBtn.onclick = loadPage; } else { var bkCntr = dc.createElement('span'); if (disableCopyPaste) { bkCntr.onclick = bkCntr.ondragstart = bkCntr.oncontextmenu = bkCntr.oncopy = bkCntr.oncut = bkCntr.onpaste = function(evt) { evt.preventDefault(); }; } var lns = noway[0].split(/\n/g); for (var pgIdx = 0; pgIdx < lns.length; pgIdx++) { lns[pgIdx] = DS('1978thepasswhere', lns[pgIdx]); /*if (pgIdx < 200) { console.log(pgIdx, lns[pgIdx]) }*/ } lns.forEach(function(line) { var p = dc.createElement("p"); p.setAttribute("style", "cursor:arrow; text-indent: 3em; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px"); p.appendChild(dc.createTextNode(line)); bkCntr.appendChild(p); }); cntr.insertBefore(bkCntr, clseBtn2); var fontSize = 1; function applyFontSize() { bkCntr.style['font-size'] = fontSize + "em"; } var input = dc.createElement('input'); input.setAttribute('type', 'button'); input.setAttribute('value', '+'); input.onclick = function(event) { fontSize *= 1.1; applyFontSize(); event.preventDefault(); }; cntr.insertBefore(input, btnsBefore); input = dc.createElement('input'); input.setAttribute('type', 'button'); input.setAttribute('value', '-'); input.onclick = function(event) { fontSize /= 1.1; applyFontSize(); event.preventDefault(); }; cntr.insertBefore(input, btnsBefore); } //bd.style.overflow = 'hidden'; window.addEventListener("keydown", mykeypress); bd.appendChild(cntr); }; var btn = document.getElementById("pages4") btn.removeAttribute("onclick"); btn.setAttribute("title", "Открыть в читалке"); btn.onclick = function(event) { showReader(); event.preventDefault(); }; btn.innerHTML = "R"; console.log("Юзерскрипт отработал"); })();