如何避免Windows下调用webbrowser.open夺取输入焦点?
在Windows后台打开浏览器标签页(避免焦点被夺取)
默认的webbrowser.open确实会强制将焦点转移到新打开的浏览器标签页,要实现后台打开,可以绕过该模块,直接调用浏览器的命令行参数来控制:
直接调用浏览器命令行(推荐方案)
不同浏览器有各自的命令行参数支持后台打开,用subprocess模块执行对应命令即可:
Chrome/Edge
Chrome和Edge基于Chromium内核,参数通用:
import subprocess # Chrome 示例(路径根据实际安装位置调整) subprocess.Popen( [r"C:\Program Files\Google\Chrome\Application\chrome.exe", "--new-tab", "--no-focus-last-window", "https://example.com"] ) # Edge 示例 subprocess.Popen( [r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe", "--new-tab", "--no-focus-last-window", "https://example.com"] )
--no-focus-last-window参数会让新标签页在后台加载,不会夺取当前窗口的焦点。
Firefox
Firefox使用--background参数配合新标签命令:
import subprocess subprocess.Popen( [r"C:\Program Files\Mozilla Firefox\firefox.exe", "-new-tab", "--background", "https://example.com"] )
注意事项
- 浏览器路径需与实际安装位置匹配,可通过cmd执行
where chrome/where msedge/where firefox获取准确路径。 - 旧版本浏览器可能不支持上述参数,建议使用最新版。
- 如果是便携版浏览器,直接替换为对应可执行文件的路径即可。
内容的提问来源于stack exchange,提问作者serv-inc
相关产品推荐
相关产品推荐

