如何在Chrome后台JS中创建隐藏窗口?求助解决代码无效问题
解决Chrome扩展中创建后台不可见窗口的问题
我明白你想要实现一个完全在后台运行、用户完全看不到的窗口,你原来的代码用state:"minimized"只是把窗口缩小到任务栏,用户依然能发现它,所以达不到真正隐藏的效果。下面给你两种可行的解决方案:
方案一:创建屏幕外的极小窗口
通过设置窗口尺寸为1x1,并把位置放到屏幕可视区域之外,这样用户完全看不到窗口,同时搭配focused:false避免窗口激活干扰用户。修正后的代码如下:
// background.js chrome.windows.create({ url: 'https://mobile.facebook.com/friends/center/requests/?rfj', focused: false, width: 1, height: 1, left: -1000, // 将窗口移到屏幕左侧可视区域外 top: -1000, // 将窗口移到屏幕顶部可视区域外 type: 'popup' // 使用popup类型,避免显示浏览器工具栏 }, function(hiddenWindow) { // 可选:监听窗口位置变化,防止意外被移动到可视区域 chrome.windows.onBoundsChanged.addListener(function(windowId) { if (windowId === hiddenWindow.id) { chrome.windows.update(hiddenWindow.id, { left: -1000, top: -1000 }); } }); });
方案二:使用后台标签页(若窗口不是必需项)
如果你只是需要加载指定链接并在后台运行,不需要单独窗口的话,用chrome.tabs.create创建后台标签页会更简单,用户也完全看不到:
// background.js chrome.tabs.create({ url: 'https://mobile.facebook.com/friends/center/requests/?rfj', active: false // 设置为false,让标签页保持后台状态不激活 });
必要的权限配置
无论采用哪种方案,都需要在扩展的manifest.json中声明对应权限:
- 窗口方案:添加
"windows"权限 - 标签页方案:添加
"tabs"权限
示例Manifest V3配置:
{ "manifest_version": 3, "name": "你的扩展名称", "version": "1.0", "permissions": ["windows", "tabs"], "background": { "service_worker": "background.js" } }
最后补充下原代码无效的原因:state:"minimized"只是让窗口缩小到任务栏,依然会被用户察觉;focused:false仅控制窗口不获取焦点,但窗口本身还是可见的。Chrome的chrome.windows.createAPI并没有直接的"hidden"状态参数,所以只能通过位置和尺寸的技巧实现完全隐藏的效果。
内容的提问来源于stack exchange,提问作者Salome Sulaberidze
相关产品推荐
相关产品推荐

