Smart Page Auto Refresh

Intelligently refreshes web pages only when content changes - no configuration needed

目前为 2024-11-05 提交的版本。查看 最新版本

// ==UserScript==
// @name         Smart Page Auto Refresh
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Intelligently refreshes web pages only when content changes - no configuration needed
// @author       kequn yang
// @match        *://*
// @match        file:///*
// @grant        none
// @run-at       document-end
// @license MIT
// ==/UserScript==

(function() {
    'use strict';
    
    let lastContentHash = '';
    const REFRESH_INTERVAL = 1000;  // 1 second default interval
    
    function getContentHash() {
        const content = document.body.innerHTML;
        let hash = 0;
        for (let i = 0; i < content.length; i++) {
            const char = content.charCodeAt(i);
            hash = ((hash << 5) - hash) + char;
            hash = hash & hash;
        }
        return hash.toString();
    }
    
    function hasContentChanged() {
        const currentHash = getContentHash();
        const hasChanged = lastContentHash !== currentHash;
        lastContentHash = currentHash;
        return hasChanged;
    }

    async function checkAndRefresh() {
        try {
            const response = await fetch(window.location.href);
            const text = await response.text();
            const tempDiv = document.createElement('div');
            tempDiv.innerHTML = text;
            
            if (hasContentChanged()) {
                window.location.reload();
            }
        } catch (error) {
            window.location.reload();
        }
    }

    function setupAutoRefresh() {
        lastContentHash = getContentHash();
        setInterval(checkAndRefresh, REFRESH_INTERVAL);
    }

    setupAutoRefresh();
})();