node.js - Puppeteer chrome 获取事件/可见选项卡

标签 node.js google-chrome google-chrome-extension puppeteer

在 chrome 扩展中,您可以使用下面的方法在窗口中找到事件标签

chrome.tabs.query({
            currentWindow: true,
            active: true,
        }

我有一个连接到现有浏览器并获取所有页面的以下代码。我无法确定是否有办法让我知道哪个选项卡/页面当前是事件的并获取其 url( page.url() ,但要使用数组中的哪个?)
const puppeteer = require('puppeteer');

debuggerUrl = "http://127.0.0.1:9999/json/version"

const request = require('request');

request(debuggerUrl, function (error, response, body) {
  data = JSON.parse(body);
  webSocketDebuggerUrl = data["webSocketDebuggerUrl"];
  console.log("Connecting to ", webSocketDebuggerUrl);
  puppeteer.connect({browserWSEndpoint: webSocketDebuggerUrl}).then(async browser => {
    var pages = await browser.pages();
    console.log(pages);
    console.log(await browser.targets())
    await browser.disconnect();
  })
});

最佳答案

document.hidden现在已弃用。但是我们可以使用 document.visibilityState
请注意 page即使您更改了不同的选项卡,也将始终引用同一个选项卡。所以你要改page手动转到事件选项卡。

const pages = await browser.pages();
// this will return list of active tab (which is pages object in puppeteer)
const visiblePages = pages.filter(async (p) => {
  const state = await p.evaluate(() => document.visibilityState);
  return state === 'visible';
});
const activeTab = visiblePages[0]; // since there should be only 1 active tab per window

关于node.js - Puppeteer chrome 获取事件/可见选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51039569/

相关文章:

javascript - 如何使用 Node.js 在 MongoDB 中查找下一个文档

html - 从书签 HTML 文件创建多个 Windows URL 快捷方式

javascript - 右键单击并从上下文菜单访问功能后如何获取链接的 DOM?

javascript - Chrome 扩展滚动条放置

javascript - 在 Nowjs 中传递带有回调参数的对象

javascript - 连接mongodb到 Node 报错

javascript - 如何使用 javascript 或 lodash 从对象数组中删除不匹配的对象

javascript - 尽管权限中有 url,但跨源 XMLHttpRequest 无法在 Chrome 打包应用程序中工作

google-chrome - Twitter Bootstrap 在 Webkit(Chrome、Safari)上以不同方式缩放文本

javascript - 在 Chrome 中测试时 Chrome 扩展程序不起作用 ://extensions/