Делает самиздатовские текста более читабельными: смена фона на тёмный, смена шрифта на verdana, смена цвета текста на светлый, текст выровнен по ширине строки, добавлен автоматический перенос слов
当前为
// ==UserScript==
// @name Samlib Reader
// @description Делает самиздатовские текста более читабельными: смена фона на тёмный, смена шрифта на verdana, смена цвета текста на светлый, текст выровнен по ширине строки, добавлен автоматический перенос слов
// @copyright 2019, Angens (https://openuserjs.org/users/angens)
// @license MIT
// @version 2.0.5
// @match http://samlib.ru/*/*/*.shtml
// @exclude http://samlib.ru/*/*/index*.shtml
// @exclude http://samlib.ru/*/*/stat.shtml
// @grant none
// @namespace https://greasyfork.org/users/386214
// ==/UserScript==
//
// ==OpenUserJS==
// @author angens
// ==/OpenUserJS==
function changer(){
// Прописываем в тело возможность переноса слов
document.querySelector("body").setAttribute("lang", "ru");
document.querySelector("body").setAttribute("style", "-moz-hyphens: auto; -webkit-hyphens: auto; -ms-hyphens: auto; white-space: unset;");
/*
* Блок работы с описанием
*/
// Ищем комментарии на первом уровне тела
let numOfComments = 0;
let lastComment;
let bodyChildren = document.body.childNodes;
for (let i = 0; i < bodyChildren.length; i++){
let node = bodyChildren[i];
if (node.nodeType === 8){
numOfComments++;
lastComment = node;
}
}
// Создаём блок описания
let description = document.createElement('div');
description.id = "SamLibReaderDescription";
// Если комментарии начала и конца произведения дети body — сразу записываем всё под нижним комментарием в блок описания
if(numOfComments === 2){
while(lastComment.nextSibling){
description.append(lastComment.nextSibling);
}
}
// Ищем комментарий описания и находить главный блок. Все последующие отправляем в блок описания
if(numOfComments === 1){
let treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false);
while (treeWalker.nextNode()){
if (treeWalker.currentNode.nodeType === 8){
if (treeWalker.currentNode.nodeValue == "-- Блок описания произведения (слева внизу) ---------------------"){
let node = treeWalker.currentNode.parentElement.parentElement.parentElement;
while(node.nextSibling){
description.append(node.nextSibling);
}
description.insertBefore(node, description.firstChild);
}
}
}
}
/*
* Блок работы с текстом
*/
// Блок работы с произведением
let nodes = document.querySelectorAll("dd, p");
let new_element = document.createElement('div');
new_element.id = "SamLibReader";
new_element.style.color = "wheat";
new_element.style.fontSize = "18px";
new_element.style.fontFamily = "verdana";
new_element.style.backgroundColor = "#212127";
new_element.style.paddingTop = "5%";
new_element.style.padding = "5%";
new_element.style.marginLeft = "25%";
new_element.style.marginRight = "25%";
new_element.style.textAlign = "justify";
if(nodes[0])
nodes[0].parentElement.insertBefore(new_element, nodes[0]);
for (let i = 0; i < nodes.length; i++){
new_element.append(nodes[i]);
}
document.body.append(description);
/*
* Блок работы с тегом <pre>
*/
let pre = document.querySelectorAll("pre");
for (let i = 0; i < pre.length; i++){
pre[i].style.marginLeft = 'auto';
pre[i].style.marginRight = 'auto';
pre[i].style.width = 'min-content';
pre[i].style.color = "wheat";
pre[i].style.fontSize = "18px";
pre[i].style.fontFamily = "roboto condensed, verdana";
pre[i].style.backgroundColor = "#212127";
pre[i].style.padding = '5%';
}
}
document.addEventListener("DOMContentLoaded", changer());