NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name WebHelper // @name:vi WebHelper // @namespace https://lelinhtinh.github.io // @description Add some useful features to some websites. // @description:vi Bổ sung một số tính năng hữu ích cho một vài trang web. // @version 1.1.1 // @icon https://i.imgur.com/FHgT0E4.png // @author Zzbaivong // @oujs:author baivong // @license MIT; https://baivong.mit-license.org/license.txt // @match https://tienhieptruyen.net/* // @require https://unpkg.com/hotkeys-js/dist/hotkeys.min.js // @noframes // @supportURL https://github.com/lelinhtinh/Userscript/issues // @run-at document-idle // @grant none // @inject-into content // ==/UserScript== /* global hotkeys */ const k = hotkeys.noConflict(); const chapter = document.querySelector('.chapter-c'); chapter.scrollIntoView(); document.querySelector('.chap-content').style.userSelect = 'auto'; chapter.querySelectorAll('[style]').forEach((e) => { e.remove(); }); document.addEventListener( 'contextmenu', function (event) { event.stopPropagation(); }, true, ); let lineHeight = parseFloat(getComputedStyle(chapter).lineHeight); document.querySelector('.chap-list-update .font-size').addEventListener('change', () => { setTimeout(() => { lineHeight = parseFloat(getComputedStyle(chapter).lineHeight); }, 100); }); let endChapter = false; k('left', () => { document.querySelector('.chap-header .btn-next .fa-angle-double-left').parentNode.click(); }); k('right', () => { document.querySelector('.chap-header .btn-next .fa-angle-double-right').parentNode.click(); }); k('up', () => { document.documentElement.scrollTop -= window.innerHeight - lineHeight * 2; }); k('down', () => { if (endChapter) { k.trigger('right'); return; } document.documentElement.scrollTop += window.innerHeight - lineHeight * 2; const chapterRect = chapter.getBoundingClientRect(); if ( chapterRect.top + chapterRect.height - window.innerHeight + lineHeight * 2 < 0 || document.documentElement.scrollTop + window.innerHeight === document.documentElement.scrollHeight ) { endChapter = true; } });