// ==UserScript== // @name FIMFiction - Clickable Read Flow // @namespace Selbi // @include http*://*fimfiction.net/story/*/* // @include http*://*fimfiction.net/chapter/* // @version 3.1 // @grant none // @description Adds the ability to scroll through a story by clicking on paragraphs // @downloadURL none // ==/UserScript== (function() { "use strict"; // Get elements let chapterBody = document.getElementById("chapter-body"); let paragraphOptionsCloseButton = document.querySelector("#paragraph-options a:last-child"); // Install scroll event listener when clicking on paragraphs const MARGIN_TOP = 20; const BOOKMARK_BOX_MARGIN = 80; fQuery.addScopedEventListener(chapterBody, "p", "click", function() { let y = getTargetY(this); if (y === window.scrollY) { scrollToY(y - BOOKMARK_BOX_MARGIN); } else { scrollToY(y); paragraphOptionsCloseButton.click(); } }); function getTargetY(elem) { let y = Math.round(elem.getBoundingClientRect().top + window.scrollY - MARGIN_TOP); return y; } function scrollToY(y) { window.scrollTo({top: y, behavior: "smooth"}); } // Styling function addGlobalStyle(css) { let style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; document.getElementsByTagName('head')[0].appendChild(style); } addGlobalStyle(` #chapter-body p:hover { cursor: pointer; transition: all 200ms ease; color: white !important; } #chapter_toolbar_container { padding-bottom: 0px !important; } `); })();