// ==UserScript== // @name Return Pagination to Google // @description Makes Google searches break down into separate pages, rather than displaying as one continuous page. (Quick & Dirty) // @namespace Violentmonkey Scripts // @match https://www.google.com/search // @grant none // @version 1.2 // @author Jupiter Liar // @license Attribution CC BY // @description 6/15/2023, 2:30 PM // @downloadURL none // ==/UserScript== // Check if the page has the required conditions if (document.getElementById('botstuff') && !document.querySelector('table.AaVjTc')) { // Create the table element var table = document.createElement('table'); table.className = 'AaVjTc'; table.style.margin = 'auto'; table.style.marginBottom = '32px'; table.style.scale = '80%'; // Create a variable to store the page number var pageNumber; // Extract the page number from the URL var startParam = "&start="; var startIndex = window.location.href.indexOf(startParam); if (startIndex === -1) { pageNumber = 1; } else { var startValue = parseInt(window.location.href.substring(startIndex + startParam.length)); pageNumber = Math.floor(startValue / 10) + 1; } // Remove the anchor portion from the URL var urlWithoutAnchor = window.location.href.split("#")[0]; // Create the table columns for (var i = 0; i < 11; i++) { var column = document.createElement('td'); column.style.textAlign = 'center'; column.style.verticalAlign = 'middle'; // Changed from 'baseline' to 'middle' column.style.minWidth = '20px'; column.style.fontSize = '20pt'; // Add padding to middle columns if (i > 0 && i < 10) { column.style.padding = '0 8pt'; // Changed from '0 8px' to '0 8pt' } // Add padding to previous and next columns if (i === 0 || i === 10) { column.style.padding = '0 16pt'; // Changed from '0 16px' to '0 16pt' } // Add content to the columns if (i === 0) { if (pageNumber !== 1) { var previousLink = document.createElement('a'); previousLink.href = urlWithoutAnchor.replace(startParam + startValue, startParam + (startValue - 10)); var previousSpan = document.createElement('span'); previousSpan.style.padding = '0 16pt'; // Changed from '0 8pt' to '0 16pt' previousSpan.style.fontSize = '28pt'; previousSpan.style.verticalAlign = 'middle'; // Added vertical-align style previousSpan.innerText = '<'; previousLink.appendChild(previousSpan); var previousTextSpan = document.createElement('span'); previousTextSpan.style.verticalAlign = 'middle'; // Added vertical-align style previousTextSpan.innerText = 'Previous'; previousLink.appendChild(previousTextSpan); column.appendChild(previousLink); } } else if (i === 10) { var nextLink = document.createElement('a'); var nextStartValue = (pageNumber) * 10; if (startIndex === -1) { nextLink.href = urlWithoutAnchor + startParam + nextStartValue; } else { nextLink.href = urlWithoutAnchor.replace(startParam + startValue, startParam + nextStartValue); } var nextTextSpan = document.createElement('span'); nextTextSpan.style.verticalAlign = 'middle'; // Added vertical-align style nextTextSpan.innerText = 'Next'; nextLink.appendChild(nextTextSpan); var nextSpan = document.createElement('span'); nextSpan.style.padding = '0 16pt'; // Changed from '0 8pt' to '0 16pt' nextSpan.style.fontSize = '28pt'; nextSpan.style.verticalAlign = 'middle'; // Added vertical-align style nextSpan.innerText = '>'; nextLink.appendChild(nextSpan); column.appendChild(nextLink); } else { // Calculate the page number for the column var columnNumber; if (pageNumber < 5) { columnNumber = i; } else if (pageNumber >= 5) { columnNumber = pageNumber - 5 + i; } if (columnNumber === pageNumber) { // Add page number without link column.innerText = columnNumber; } else { // Add page number with link var newStartValue = (columnNumber - 1) * 10; if (newStartValue === 0) { newStartValue = "0"; } var linkHref; if (startIndex === -1) { linkHref = urlWithoutAnchor + startParam + newStartValue; } else { linkHref = urlWithoutAnchor.replace(startParam + startValue, startParam + newStartValue); } column.innerHTML = `${columnNumber}`; } } // Append the column to the table table.appendChild(column); } // Check if the first column is empty and delete it var firstColumn = table.querySelector('td:first-child'); if (firstColumn.innerText === '') { table.removeChild(firstColumn); } // Append the table to the 'botstuff' div var botstuffDiv = document.getElementById('botstuff'); botstuffDiv.appendChild(table); } // Check if the page has the required conditions if (document.getElementById('botstuff')) { var botstuffDiv = document.getElementById('botstuff'); var divsToHide = botstuffDiv.querySelectorAll('div[jscontroller="ogmBcd"]'); for (var i = 0; i < divsToHide.length; i++) { divsToHide[i].style.display = "none"; } } // Function to hide elements with class "C4clhf" function hideElementWithClass(className) { var elements = document.getElementsByClassName(className); for (var i = 0; i < elements.length; i++) { elements[i].style.display = "none"; } } // Function to handle mutations and hide elements function handleMutations(mutationsList) { for (var i = 0; i < mutationsList.length; i++) { var mutation = mutationsList[i]; var addedNodes = mutation.addedNodes; for (var j = 0; j < addedNodes.length; j++) { var addedNode = addedNodes[j]; if (addedNode.classList && addedNode.classList.contains("C4clhf")) { hideElementWithClass("C4clhf"); } } } } // Create a new mutation observer var observer = new MutationObserver(handleMutations); // Start observing the 'body' element and its descendants observer.observe(document.body, { childList: true, subtree: true }); // Hide existing elements with class "C4clhf" hideElementWithClass("C4clhf");