laravel-admin自动刷新自定义时间
xuexi 2026-03-27 13:19:54 发表在:PHP 查看数:4
/* ====================== 终极版:无限自动刷新 START ====================== */
// 1. 顶部工具栏
$grid->tools(function ($tools) {
    $tools->append('
    <div class="pull-left" style="margin:0 15px;display:flex;align-items:center;gap:5px;">
        <input type="number" id="refresh_sec" placeholder="刷新秒数" min="1" 
               class="form-control input-sm" style="width:90px;">
        <button id="start_refresh" class="btn btn-sm btn-success">启动刷新</button>
        <button id="stop_refresh" class="btn btn-sm btn-warning">停止刷新</button>
    </div>
    ');
});

// 2. JS逻辑(修复无限刷新)
$grid->footer(function () {
    echo <<<JS
<script>
let autoRefreshTimer = null;

// 页面加载时,自动读取本地存储的刷新时间,重启定时器(核心!解决只刷新一次的问题)
window.onload = function() {
    const saveSeconds = localStorage.getItem('auto_refresh_seconds');
    if (saveSeconds && saveSeconds >= 1) {
        startRefresh(saveSeconds);
    }
}

// 启动刷新函数
function startRefresh(seconds) {
    if (autoRefreshTimer) clearInterval(autoRefreshTimer);
    // 保存秒数到本地存储(刷新页面后不丢失)
    localStorage.setItem('auto_refresh_seconds', seconds);
    // 无限循环定时器
    autoRefreshTimer = setInterval(function() {
        location.reload();
    }, seconds * 1000);
}

// 按钮:启动
$('#start_refresh').on('click', function () {
    const seconds = $('#refresh_sec').val();
    if (!seconds || seconds < 1) {
        alert('请输入大于0的数字!');
        return;
    }
    startRefresh(seconds);
    alert('已开启 ' + seconds + ' 秒无限自动刷新');
});

// 按钮:停止
$('#stop_refresh').on('click', function () {
    if (autoRefreshTimer) {
        clearInterval(autoRefreshTimer);
        autoRefreshTimer = null;
    }
    // 清除本地存储
    localStorage.removeItem('auto_refresh_seconds');
    alert('已停止自动刷新');
});
</script>
JS;
});
/* ====================== 终极版 END ====================== */
最近访问时间:2026-03-27 16:31:05
知识库:430条鸣谢:TAY  备案号:蜀ICP备2024090044号