NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name MangaMonk Sticky Bar Unsticker And Better Last Uppdates by Sapioit // @namespace http://tampermonkey.net/ // @version v1.3.0.1--2025-05May-10Sat // @copyright since 2025, sapioitgmail.com (https://openuserjs.org/users/sapioitgmail.com) // @description MangaMonk Sticky Bar Unsticker And Better Last Uppdates by Sapioit! // @author Sapioit // @license GPL-2.0-only; http://www.gnu.org/licenses/gpl-2.0.txt // @match https://mangamonk.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=mangamonk.com // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @grant GM_registerMenuCommand // @updateURL https://greasyfork.org/scripts/535506/MangaMonk%20Sticky%20Bar%20Unsticker%20And%20Better%20Last%20Uppdates%20by%20Sapioit.user.js // @downloadURL https://openuserjs.org/install/sapioitgmail.com/MangaMonk_Sticky_Bar_Unsticker_And_Better_Last_Uppdates_by_Sapioit.user.js // ==/UserScript== // @updateURL https://openuserjs.org/meta/sapioitgmail.com/MangaMonk_Sticky_Bar_Unsticker_And_Better_Last_Uppdates_by_Sapioit.meta.js // @downloadURL https://greasyfork.org/scripts/535506-mangamonk-sticky-bar-unsticker-and-better-last-uppdates-by-sapioit/code/MangaMonk%20Sticky%20Bar%20Unsticker%20And%20Better%20Last%20Uppdates%20by%20Sapioit.user.js (function() { 'use strict'; // CSS class name to toggle margin const marginClass = 'custom-section-margin'; // Function to toggle margin style function toggleMarginStyle() { const isMarginApplied = GM_getValue('marginApplied', false); if (!isMarginApplied) { // Apply margin GM_addStyle(`.${marginClass} { margin: 0 10%; }`); document.querySelectorAll('.section .section-body').forEach(el => el.classList.add(marginClass)); GM_setValue('marginApplied', true); console.log('Margin applied: 0 10%; to .section .section-body'); } else { // Remove margin document.querySelectorAll('.section .section-body').forEach(el => el.classList.remove(marginClass)); GM_setValue('marginApplied', false); console.log('Margin removed: set to margin: 0; on .section .section-body'); } } // Register the context menu command GM_registerMenuCommand('Toggle Margin on .section .section-body', toggleMarginStyle); // Adds Styles to the affected pages. GM_addStyle('.viewer-header.scroll-down, .viewer-header.scroll-up { position: absolute; animation: none; } )'); //GM_addStyle('.book-detailed-item .thumb { width: 100% !important; display: block !important; height: 600px !important; } )'); GM_addStyle('.book-detailed-item .thumb { width: 100% !important; display: block !important; } )'); //GM_addStyle('.book-detailed-item .thumb { height: 600px !important; } )'); GM_addStyle('.book-detailed-item .thumb img { height: 100% !important; image-rendering: pixelated !important; display: block !important; } )'); GM_addStyle('.book-detailed-item { display: inline !important; } )'); GM_addStyle('.book-item { width: 25%; } )'); GM_addStyle('.container { max-width: none !important; } )'); // Example: (This is VERY generic and likely needs to be adapted) document.removeEventListener('keydown', function(event) { if (event.key === 'a' || event.key === 'd') { event.preventDefault(); // Stop default action event.stopPropagation(); // Stop propagation return false; // Stop further handling } }, true); // Use capture phase to ensure removal document.addEventListener('keydown', function(event) { if (event.key === 'a' || event.key === 'd' || event.key === 'A' || event.key === 'D') { event.preventDefault(); // Stop default action event.stopPropagation(); // Stop propagation return false; // Stop further handling } }, true); // Function to preload the image and then resize the element function preloadAndResizeImage(element, img) { console.log('Preloading image:', img.src); const preloadImg = new Image(); preloadImg.src = img.src; preloadImg.onload = function() { console.log('Image loaded:', { src: preloadImg.src, naturalWidth: preloadImg.naturalWidth, naturalHeight: preloadImg.naturalHeight }); const elementWidth = element.clientWidth; const aspectRatio = preloadImg.naturalHeight / preloadImg.naturalWidth; element.style.height = elementWidth * aspectRatio + 'px'; console.log('Resized element:', element); }; preloadImg.onerror = function() { console.error('Failed to load image:', preloadImg.src); }; // Remove the lazy class from the img element img.classList.remove('lazy'); } // Function to observe and handle images function observeImages() { let elements = document.querySelectorAll('.book-detailed-item .thumb'); elements.forEach(function(element) { let img = element.querySelector('a img'); if (img) { console.log('Observing image:', img.src); preloadAndResizeImage(element, img); new MutationObserver(() => preloadAndResizeImage(element, img)).observe(img, { attributes: true, attributeFilter: ['src'] }); } }); } // Run the function initially observeImages(); // Optionally, observe for new elements added dynamically const observer = new MutationObserver(observeImages); observer.observe(document.body, { childList: true, subtree: true }); // Remove the debugger statement if present const scriptBlocks = document.querySelectorAll('script'); scriptBlocks.forEach(script => { if (script.innerHTML.includes('debugger')) { script.innerHTML = script.innerHTML.replace(/debugger;/g, ''); } if (script.innerHTML.includes('console.clear')) { script.innerHTML = script.innerHTML.replace(/console.clear;/g, ''); } }); })();