您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Enables infinite scroll on Brave Search
- // ==UserScript==
- // @name Brave Infinite Scroll
- // @description Enables infinite scroll on Brave Search
- // @match *://search.brave.com/search*
- // @run-at document-end
- // @version 0.0.1.20250309090434
- // @namespace https://greasyfork.org/users/1435046
- // ==/UserScript==
- let pageNumber = 1;
- let isLoading = false;
- let hasMore = true;
- const fetchNextPage = async () => {
- const baseUrl = new URL(window.location.href);
- baseUrl.searchParams.set('offset', pageNumber);
- try {
- const response = await fetch(baseUrl.toString());
- const text = await response.text();
- const newDoc = new DOMParser().parseFromString(text, 'text/html');
- // Create container for new results
- const container = document.createElement('div');
- container.id = `page-${pageNumber}`;
- container.style.marginTop = '20px';
- // Add new results (adjust selector based on Brave's structure)
- newDoc.querySelectorAll('#results > .snippet').forEach(result => {
- container.appendChild(result.cloneNode(true));
- });
- // Find insertion point (before pagination element)
- const insertionPoint = document.querySelector('#pagination-snippet') ||
- document.querySelector('#results').lastElementChild;
- if (insertionPoint) {
- insertionPoint.before(container);
- }
- // Check for more pages (look for Next button)
- hasMore = !!newDoc.querySelector('a[href*="offset="]:not([disabled])');
- if (hasMore) pageNumber++;
- } catch (error) {
- console.error('Error fetching next page:', error);
- hasMore = false;
- }
- };
- window.addEventListener('scroll', async () => {
- const scrollThreshold = 1000;
- const scrollPosition = window.innerHeight + window.scrollY;
- const scrollMax = document.documentElement.scrollHeight - scrollThreshold;
- if (!isLoading && hasMore && scrollPosition >= scrollMax) {
- isLoading = true;
- await fetchNextPage();
- isLoading = false;
- }
- });