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

Chrome扩展:如何从隐身窗口创建非隐身窗口?

解决Chrome扩展从隐身窗口创建非隐身窗口的问题

可以实现,核心是借助扩展的后台脚本(运行在非隐身全局上下文)来执行创建操作,而非直接从隐身窗口的脚本调用。具体步骤如下:

  1. 配置扩展权限与隐身模式策略
    在manifest.json中确保以下配置:

    • 添加windows或tabs权限,用于操作窗口/标签页
    • 设置incognito为split或spanning(这是扩展能在隐身模式下运行的必要配置,你的扩展应该已经满足,但需要确认)

    示例manifest.json片段:

    {
      "manifest_version": 3,
      "permissions": ["windows"],
      "incognito": "split",
      "background": {
        "service_worker": "background.js"
      }
    }
    
  2. 调整前端脚本逻辑
    不要在隐身窗口的弹窗/内容脚本中直接调用chrome.windows.create,改为给后台脚本发送消息:

    // 比如弹窗中的按钮点击事件
    document.querySelector('#open-btn').addEventListener('click', () => {
      chrome.runtime.sendMessage({
        action: 'openNonIncognito',
        targetUrl: 'https://www.google.com'
      });
    });
    
  3. 后台脚本处理创建请求
    在background.js中监听消息,执行创建非隐身窗口的操作:

    chrome.runtime.onMessage.addListener((msg, sender, sendResp) => {
      if (msg.action === 'openNonIncognito') {
        chrome.windows.create({
          url: msg.targetUrl,
          incognito: false
        });
      }
    });
    

原理说明

Chrome扩展的隐身窗口脚本会继承当前上下文的隐身状态,直接调用chrome.windows.create会默认创建同模式的窗口。而后台脚本运行在Chrome的主进程上下文,不受隐身模式限制,因此能正确创建非隐身窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:22:40