Greasy Fork is available in English.
Remove ads and added zoom out options
// ==UserScript== // @name Nettruyen Tools // @namespace nettruyen // @description Remove ads and added zoom out options // @version 1.1 // @include https://*nettruyen* // @author kylyte // @license MIT // @run-at document-start // @icon https://www.google.com/s2/favicons?sz=64&domain=nettruyenus.com // @grant GM_addStyle // @grant GM_registerMenuCommand // @grant GM_setValue // @grant GM_getValue // @noframes // ==/UserScript== function removeAds() { GM_addStyle(` .reading-control > .mrb5, div.mrb10:nth-of-type(2), .hidden-sm.hidden-xs.mrb10.alert-info.alert, .top > i, .notify_block, .text-center.page-chapter, #nt_comments > div.mrt5, .facebook-like, .mrb5.text-center.container, .container div:not(.top)>div.mrb5.mrt5.text-center>a, .footer { display: none !important; } .scroll-to-fixed-fixed.chapter-nav { position: unset !important; z-index: 100 !important; box-shadow: unset !important; } `); } const defaultSettings = { zoomFactor: 1 }; let settings = GM_getValue('settings', defaultSettings); function zoomOutImages() { var images = document.querySelectorAll('.box_doc img[src]'); var factor = settings.zoomFactor; for (var i = 0; i < images.length; i++) { var image = images[i]; image.style.width = image.naturalWidth * factor + 'px'; image.style.height = image.naturalHeight * factor + 'px'; } } function setZoomFactor(factor) { settings.zoomFactor = factor; GM_setValue('settings', settings); location.reload(); } const zoomLevels = [1, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2]; const zoomNames = ['100%', '90%', '80%', '70%', '60%', '50%', '40%', '30%', '20%']; for (var i = 0; i < zoomLevels.length; i++) { let name = (settings.zoomFactor === zoomLevels[i] ? '[x]' : '[ ]') + ' Zoom Out ' + zoomNames[i]; GM_registerMenuCommand(name, setZoomFactor.bind(null, zoomLevels[i])); } function lazyloadComment() { var tabs = document.querySelectorAll('.tab-content'); tabs.forEach(function(tab) { if (tab.getBoundingClientRect().top < window.innerHeight) { loadTabContent(tab); } else { var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { loadTabContent(entry.target); observer.unobserve(entry.target); } }); }, { rootMargin: '0px', threshold: 0.1 }); observer.observe(tab); } }); function loadTabContent(tab) { console.log('Loading content for', tab); } } removeAds(); document.addEventListener('DOMContentLoaded', lazyloadComment); window.addEventListener('load', zoomOutImages);