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

如何在Electron.js中跨平台记录活跃浏览器的URL?

跨平台获取活跃浏览器窗口URL的可行方案

原生系统API定制实现

Windows平台

放弃通用辅助功能API的模糊遍历,直接针对Chromium内核(Chrome/Edge)、Firefox等主流浏览器的控件结构做精准定位:

  1. 用active-win拿到活跃窗口的句柄和进程ID
  2. 通过win32-api或ffi-napi调用Windows系统API,定位到浏览器地址栏的专属控件(比如Chrome的Chrome_OmniboxView类名控件)
  3. 读取该控件的文本内容,即为当前页面URL

Linux平台

利用Linux桌面的DBus机制或浏览器远程调试接口:

  1. 借助active-win获取活跃窗口的进程名称和ID,确认是否为目标浏览器
  2. 对Chromium系浏览器,通过DBus调用对应接口获取标签页信息;或者启动浏览器时开启远程调试端口(--remote-debugging-port=9222),通过本地调试接口拉取当前活跃标签的URL
  3. 对Firefox,可调用对应DBus接口,或使用其远程调试协议

优化浏览器扩展方案

如果之前觉得扩展麻烦,可改为Electron自动部署+Native Messaging通信:

  1. 开发极简浏览器扩展,仅监听当前标签URL变化和窗口激活状态
  2. Electron应用启动时,自动将扩展安装到对应浏览器的用户配置目录(Windows下%APPDATA%、Linux下~/.config)
  3. 扩展通过Native Messaging协议直接向Electron主进程推送当前活跃窗口的URL,无需用户手动操作

基于active-win的二次封装

定制一个专属工具,在active-win返回的基础数据上补充URL字段:

  • 针对不同系统分支处理:macOS直接复用active-win的url字段;Windows调用上述UI Automation逻辑;Linux调用DBus或远程调试接口
  • 将逻辑封装成独立npm包,供Electron应用直接调用

附active-win输出示例(macOS独有url字段):

{
    "title": "Unicorns - Google Search",
    "id": 5762,
    "bounds": {
        "x": 0,
        "y": 0,
        "height": 900,
        "width": 1440
    },
    "owner": {
        "name": "Google Chrome",
        "processId": 310,
        "bundleId": "com.google.Chrome",
        "path": "/Applications/Google Chrome.app"
    },
    "url": "https://sindresorhus.com/unicorn", /* Windows/Linux无此字段,需自行实现 */
    "memoryUsage": 11015432
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:33:15