javascript - 在 puppeteer(Nodejs 库)中发送 postMessage
问题描述
我知道如何接收 postMessages ,但我希望将 postMessage 请求发送到站点
只是一种格式
const puppeteer = require('puppeteer');
const yargs = require('yargs');
let command = yargs.argv._[0];
(async() => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
function sendMessageToContentScriptByPostMessage(data)
{
window.postMessage({cmd: 'message', data: data}, '*');
}
await page.goto(command, {waitUntil: 'networkidle0'});
await browser.close();
})();
所以用户可以这样做,节点 postmessage.js https://www.example.com
解决方案
您可以使用在浏览器内部page.evaluate
运行的东西。然后你可以发送一个postMessage:
await page.evaluate((data) => {
window.postMessage({cmd: 'message', data: data}, '*');
}, data);
要记住两件事:
- 在
evaluate
浏览器内运行,而所有其他脚本都在 NodeJS 内(您可以考虑远程与本地代码,本地 = NodeJS,远程 = Chrome) - 因此,内部的变量
evaluate
与外部不同。您需要显式传递data
toevaluate
以将其移动到浏览器上下文中。
推荐阅读
- css - css中的中心条纹背景
- regex - In a Multi-columnar File - Remove all Trailing 0's from Decimal Numbers in Bash
- android - 更改材质导航视图中特定项目的背景颜色
- sqlite - 如何根据 Flutter 中的 ID 列表删除 SQLite 行?
- php - Laravel 7 - 嵌套资源路由中的范围问题
- python - 尝试从 S3 发送文件作为电子邮件附件时,字节类型的对象不是 JSON 可序列化的
- php - 如果值匹配,请在 php 中添加相关属性
- c# - 如何通过依赖注入将 UserManager 发送到 ASP.NET CORE 中的业务层?
- html - 多语言 Web 中的 lang html 标记
- c++ - crypto++ AES加密/解密对象重新初始化实践