You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在所有打开标签页执行Greasemonkey/Tampermonkey脚本函数?

能否在Greasemonkey/Tampermonkey中通过上下文菜单让所有标签页执行函数?

可以实现,但直接写location.reload()只能刷新当前标签页,要覆盖所有打开的标签页,得借助浏览器的标签页操作API,结合Tampermonkey(GM对这类API支持有限,更推荐用TM)的权限声明来做,下面是具体实现方法:

实现步骤

  • 第一步:声明必要权限
    在脚本的元数据块里,必须添加@grant chrome.tabs和@grant chrome.contextMenus权限,否则没法操作标签页和创建上下文菜单。示例元数据:
// ==UserScript==
// @name         批量刷新所有标签页
// @version      0.1
// @description  右键菜单一键刷新所有打开的标签页
// @match        *://*/*
// @grant        chrome.tabs
// @grant        chrome.contextMenus
// ==/UserScript==
  • 第二步:编写菜单与批量执行逻辑
    创建上下文菜单,绑定点击事件后,查询所有标签页并逐个执行刷新操作:
(function() {
    'use strict';

    // 创建右键菜单
    chrome.contextMenus.create({
        id: "reloadAllTabs",
        title: "刷新所有标签页",
        contexts: ["all"] // 菜单可在任意场景触发,也可指定"page"等特定场景
    });

    // 绑定菜单点击事件
    chrome.contextMenus.onClicked.addListener(function(info) {
        if (info.menuItemId === "reloadAllTabs") {
            // 查询所有已打开的标签页
            chrome.tabs.query({}, function(tabs) {
                tabs.forEach(tab => {
                    // 刷新单个标签页,bypassCache设为true可强制跳过缓存从服务器加载
                    chrome.tabs.reload(tab.id, {bypassCache: false});
                });
            });
        }
    });
})();

注意点

  • 优先用Tampermonkey:Greasemonkey对Chrome系API的支持不如Tampermonkey完善,Firefox用户可以把代码里的chrome换成browser,权限声明对应改成@grant browser.tabs和@grant browser.contextMenus。
  • 部分特殊标签页(比如浏览器设置页、默认新标签页)受浏览器权限限制,可能无法被脚本刷新。

内容的提问来源于stack exchange,提问作者Lionstrike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 08:45:00