javascript - 如何在nodejs和puppeteer之间交换数据?

标签 javascript node.js puppeteer

我制作了一个从index.js开始的nodejs应用程序。 然后,index.js启动puppeteer并通过addscripttag函数将bot.js注入(inject)headless-api页面。

我让index.js在注入(inject)javascript之前设置了一个cookie来传递初始值,但我需要更常见的方式来交换数据。

我想到了两种方法;第一个是使用 cookie,第二个是通过套接字连接进行联网。

是否有其他方式在index.js(node)和puppeteer(headless chrome)之间发送和接收数据?

最佳答案

首先,puppeteer 是 Nodejs 端应用程序,因此它们有一个环境,您不需要“发送”任何内容。只需像在任何其他 JS 代码中那样传递数据即可。我假设你想在页面和nodejs之间传输数据。

要将数据从nodejs传递到页面,请使用page.evaluate 。您可以在页面上下文中调用任何代码,从简单地设置一些变量到直接调用带有必要参数的任何函数。

要发起从页面端到nodejs的传输,首先要注册一个nodejs端回调函数 page.exposeFunction然后从页面代码中调用它,它将在nodejs上下文中执行。就像前面的情况一样,其他一切都取决于该函数的代码。它可以像将传递给它的任何参数存储在某个变量中一样简单,或者直接对数据执行几乎任何您想要的操作。

关于javascript - 如何在nodejs和puppeteer之间交换数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56829382/

相关文章:

javascript - 使用dialogflow将多个参数写入firestore数据库

google-chrome-devtools - DevTool协议(protocol)提供的 `resourceType`值是如何定义的?

javascript - 停止 Puppeteer 立即删除文本

javascript - 获取 querySelector 所有的多个条件

javascript - 为什么 POST 方法在移动 Web 应用程序中不起作用

javascript - 何时使用 node-mysql 关闭 MySQL 连接?

javascript - 如何在不确定数组上使用 Promise all

javascript - 为什么我安装了node 10.1.0后显示安装的版本是5.6.0?

javascript - 如何使快速新闻栏逐字符阅读

node.js - Cloud Foundry 和 Let's Encrypt