【问题标题】:Get browser tab titles in Node js在 Node js 中获取浏览器选项卡标题
【发布时间】:2015-08-10 09:19:35
【问题描述】:

我正在尝试在我的 Node 应用程序中获取浏览器(例如 Google Chrome)中选项卡的标题。类似于 Win32 API 中的 GetWindowText() 的东西。如果可能,它需要适用于多个浏览器

目前在 Node 中,我可以检索当前进程的列表,但我无法找到任何可以为我提供该进程详细信息的内容,相当于打开任务管理器并单击 Google Chrome 上的展开箭头进程,它会为您提供选项卡的名称。

我尝试了一些来自 npm 的节点模块,但是它们似乎没有返回我需要的信息。我也在这里寻找类似的问题,但我没有找到与我在这里问的类似的东西。

所以如果有人能指出我正确的方向,我将不胜感激,

谢谢

【问题讨论】:

    标签: node.js winapi process npm


    【解决方案1】:

    您应该在这里查看 Chrome 远程调试协议:

    https://developer.chrome.com/devtools/docs/debugger-protocol

    具体这部分:

    在这种情况下,您可以将开发人员工具前端替换为 你自己的实现。而不是导航到 HTML 页面 http://localhost:9222,您的应用程序可以发现可用页面 通过请求:

    http://localhost:9222/json 并获取带有信息的 JSON 对象 关于可检查页面以及您的 WebSocket 地址 可以用来开始检测它们。

    有一些 node.js 库可以使用该协议。

    https://github.com/cyrus-and/chrome-remote-interface

    https://github.com/node-inspector/node-inspector

    这些可能会对您有所帮助。

    【讨论】:

    • 我刚试过,这确实有效......但是我正在寻找更通用的东西,不需要启动 Chrome 或任何其他带有参数的浏览器。我可能应该在问题中说明这一点,对不起。我想我会看看 Win32 API - GetWindowText() 并在 Node.js 中尝试。谢谢
    【解决方案2】:

    我通过在我的应用程序中使用 ffiref 节点模块解决了我的问题,这些模块允许我使用 user32.dll 或我想要创建的任何其他 .dll。然后我从node-ffi - callback extraction of EnumWindows 中找到了这段代码,我将其更改为对我有用的 JavaScript。

    var voidPtr = ref.refType(ref.types.void);
    var stringPtr = ref.refType(ref.types.CString);
    
    var bindings = {
        EnumWindows: ['bool', [voidPtr, 'int32']],
        GetWindowTextA: ['long', ['long', stringPtr, 'long']]
    };
    
    var user32 = ffi.Library('user32', bindings);
    var windowProc = ffi.Callback('bool', ['long', 'int32'], function (hwnd, lParam) {
        var buf = new Buffer(255);
        var ret = user32.GetWindowTextA(hwnd, buf, 255);
        var name = ref.readCString(buf, 0);     
        console.log(name);   
        return true;      
    });
    
    var checkTitles = user32.EnumWindows(windowProc, 0);
    

    但这仅适用于 Windows,我还没有找到(正确查找)OSX 上的解决方案。希望这可以帮助其他人

    【讨论】:

    • 我可以获取浏览器实例并更新页面上的某些字段吗?
    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    相关资源
    最近更新 更多